彙編(一)

彙編語言的發展

機器語言

由0和1組成的機器指令.
如:0101 0001 1101 0110
彙編語言(assembly language)

使用符號代替機器語言,也稱爲符號語言
如:mov ax,bx
高級語言

C\C++\Java\OC\Swift,更加接近人類的自然語言
如:int a = b;
我們的代碼在終端設備上是這樣的過程:

image.png
彙編語言與機器語言一一對應,每一條機器指令都有與之對應的彙編指令
彙編語言可以通過編譯得到機器語言,機器語言可以通過反彙編得到彙編語言
高級語言可以通過編譯得到彙編語言 \ 機器語言,但彙編語言\機器語言幾乎不可能還原成高級語言
彙編語言的特點

可以直接訪問、控制各種硬件設備,比如存儲器、CPU等,能最大限度地發揮硬件的功能

能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制

目標代碼簡短,佔用內存少,執行速度快

彙編指令是機器指令的助記符,同機器指令一一對應。每一種CPU都有自己的機器指令集\彙編指令集,所以彙編語言不具備可移植性

知識點過多,開發者需要對CPU等硬件結構有所瞭解,不易於編寫、調試、維護

不區分大小寫,比如mov和MOV是一樣的

彙編的用途(哥麼我學了能幹啥?)

編寫驅動程序、操作系統(比如Linux內核的某些關鍵部分)
對性能要求極高的程序或者代碼片段,可與高級語言混合使用(內聯彙編)
軟件安全
病毒分析與防治
逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\***
理解整個計算機系統的最佳起點和最有效途徑
爲編寫高效代碼打下基礎
弄清代碼的本質
函數的本質究竟是什麼?
sizeof
++a + ++a + ++a 底層如何執行的?
編譯器到底幫我們幹了什麼?
DEBUG模式和RELEASE模式有什麼關鍵的地方被我們忽略
......
最後來句裝13的話

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

彙編語言的種類

目前討論比較多的彙編語言有

8086彙編(8086處理器是16bit的CPU)
Win32彙編
Win64彙編
ARM彙編(嵌入式、Mac、iOS)
......
我們iPhone裏面用到的是ARM彙編,但是不同的設備也有差異.因CPU的架構不同.

架構 設備
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
因爲學習所以建議先從最爲經典的8086開始
結構簡潔,容易理解
指令簡單,便於記憶
原理相通
幾個必要的常識

要想學好彙編,首先需要了解CPU等硬件結構
APP/程序的執行過程

image.png
硬件相關最爲重要是CPU/內存
在彙編中,大部分指令都是和CPU與內存相關的

作者:請叫我Hank
鏈接:http://write.blog.csdn.net/postedit/78174877
來源:CSDN
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章