ARM64學習1

ARM64學習--assembly language

語言之間的關系

高級語言-->匯編語言-->機器語言-->計算機

  • 匯編語言與機器語言一一對應,每一條機器指令都有與之對應的匯編指令。
  • 匯編語言可以通過編譯得到機器語言,機器語言可以通過反編譯得到匯編語言。
  • 高級語言可以通過編譯得到匯編語言、機器語言,但是匯編語言\機器語言幾乎不可能還原為高級語言。(還原高級代碼比較復雜)

匯編語言的特點

  • 可以直接訪問、控制各種硬件設備,比如存儲器、CPU等,能最大限度的發揮硬件的功能。
  • 能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制。
  • 目標代碼剪短,占用內存少,執行速度快。
  • 匯編指令是機器指令的助記符,同機器指令一一對應。每一種CPU都有自己的機器指令集\匯編指令集,所以匯編語言不具備可移植性。
  • 開發者需要對CPU等硬件設備有所了解,不易于編寫、維護、調試。
  • 不區分大小寫。

匯編的用途

  • 編寫驅動程序、操作系統(比如Linux內核的某些關鍵部分)。
  • 針對性能要求極高的程序或者代碼,可與高級語言混合使用(內聯匯編)。
  • 軟件安全(病毒分析和防治、逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\黑客)
  • 理解整個計算機系統的最佳起點和最有效的途徑。
  • 為編寫高效代碼打下基礎。
  • 弄清楚代碼的本質。

匯編語言的種類

目前比較多的匯編語言有:
* 8086匯編
* Win32
* Win64
* ARM匯編(嵌入式、Mac、iOS)

iPhone里面用到的ARM匯編,因CPU的架構不同

    armv6:iPhone、iPhone2、iPhone3G、第一代、第二代iPod Touch
    armv7:iPhone3GS、iPhone4、iPhone4S、iPad2、iPad3、iPad mini、iPod Touch 3G、iPod Touch4
    armv7s:iPhone5、iPhone5C、iPad4
    arm64:iPhone5S以后。

常識

App執行過程:

本地磁盤--(裝載)-->內存--(讀寫)-->CPU--(控制)-->屏幕、音響、藍牙、其他設備。

匯編 中大部分指令都和CPU、內存有關。

總線:

地址總線:它的寬度決定了CPU的尋址能力。8086:20根、1M的尋址能力。
數據總線:它的寬度決定了CPU的單次數據傳輸量,也就是數據的傳送速度。8086:16根、2個字節
控制總線:它的寬度決定了CPU對其他期間的控制能力、可以有多少種控制。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容