iOS之底層匯編(一)

匯編語言的發(fā)展

機器語言

  • 由0和1組成的機器指令
  • 如:0101 0001 1101 0110

匯編語言(assembly language)

  • 使用符號代替難編寫和很難閱讀機器語言,也成為符號語言。
  • 如:mov,ax,bx,call

高級語言

  • C/C++/OC/Java/Swift,更讓人易讀和編寫的語言(更接近人類的自然語言)
  • 如:int a = b;

那我們?yōu)槭裁匆獙W匯編?

  • 首先,我們來看下高級語言的代碼在終端設(shè)備上是這樣的過程:
高級語言運行的過程
  • 匯編語言機器語言一一對應, 每一條機器指令都有與之對應的匯編指令
  • 匯編語言可以通過編譯得到機器語言,機器語言可以通過反匯編得到匯編語言
  • 高級語言可以通過編譯得到匯編語言/機器語言,但匯編語言/機器語言幾乎不可能還原成高級語言

匯編語言的特點

  • 可直接訪問、控制各種硬件設(shè)備。比如存儲器、CPU等,能最大限度地發(fā)揮硬件的功能
  • 能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制
  • 目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快
  • 匯編指令是機器指令的助記符,同機器指令一一對應。每種CPU都有自己的機器指令集/匯編指令集,所以匯編語言不具備可移植性
  • 匯編語言知識點過多,開發(fā)者需要對CPU等硬件結(jié)構(gòu)有所了解,不宜于編寫、調(diào)試、維護
  • 不區(qū)分大小寫,比如mov和MOV是一樣的

匯編能用來干什么?

  • 編寫驅(qū)動程序、操作系統(tǒng)(比如Linux內(nèi)核的某些關(guān)鍵部分)
  • 對性能要求極高的程序或者代碼片段,可與高級語言混合使用(內(nèi)嵌匯編)
  • 軟件安全
    • 病毒分析和防治
    • 逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\黑客
  • 理解整個計算機系統(tǒng)的最佳起點和最有效途徑
  • 為編寫高效代碼打下基礎(chǔ)
  • 弄清楚代碼的本質(zhì)
    • 函數(shù)的本質(zhì)是什么?
    • sizeof
    • ++a + ++a + ++a 底層如何執(zhí)行的?
    • 編譯器到底幫我們干了什么?
    • DEBUG模式和RELEASE模式有什么關(guān)鍵的地方被我們忽略
      最后引用句裝逼的話

越底層越單純!真正的程序員都需要了解的一門非常重要的語言,匯編!

匯編的種類

  • 目前討論比較多的匯編語言
    • 8086匯編(8086處理器是16bit的CPU)
    • Win32匯編
    • Win64匯編
    • ARM匯編(嵌入式、Mac、iOS)
  • 我們iPhone里面的用到的是ARM匯編,但是不同的設(shè)備也有差異。因為CPU的架構(gòu)不同
架構(gòu) 設(shè)備
armv6 iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4
armv7s iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 iPhone6s , iphone6s plus,iPhone6, iPhone6 plus,iPhone5S ,iPad Air, iPad mini2
  • 因為學習要從簡單到難所以建議先從最為經(jīng)典的8086匯編開始
    • 結(jié)構(gòu)簡潔,容易理解
    • 指令簡單,便于記憶
    • 原理相通

幾個計算機必要的常識

  • 要想學好匯編,首先需要了解CPU等硬件結(jié)構(gòu)
  • APP/程序的執(zhí)行過程


    簡易執(zhí)行過程
  • 硬件相關(guān)最為重要是CPU/內(nèi)存
  • 在匯編中,大部分指令都是和CPU與內(nèi)存相關(guān)的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容