###機(jī)器語言
計(jì)算機(jī)語言大致分三類:計(jì)算機(jī)語言、匯編語言、高級(jí)語言。
- 計(jì)算機(jī)語言:由0和1組成的機(jī)器指令
- 匯編語言:使用符號(hào)代替機(jī)器語言,也稱為符號(hào)語言
- 高級(jí)語言:更加接近人類自然語言,如c/c++/Java/OC/Swift
三者的編譯關(guān)系

image.png
- 高級(jí)語言通過編譯器得到匯編語言/機(jī)器語言
- 同一種高級(jí)語言用不同的編譯器可能得到不同的匯編語言,不同的高級(jí)語言也有可能得到相同的匯編語言,所以匯編語言很難反編譯成高級(jí)語言
- 匯編語言與機(jī)器語言一一對(duì)應(yīng),每一條機(jī)器指令都有與之對(duì)應(yīng)的匯編指令
- 由于匯編語言與機(jī)器語言一一對(duì)應(yīng)的關(guān)系,機(jī)器語言可以反匯編成匯編語言
匯編語言的特點(diǎn)
- 可以直接操作硬件設(shè)備,如儲(chǔ)存器,CPU
- 目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存少,執(zhí)行速度快
- 匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對(duì)應(yīng)。每一種CPU都有自己的機(jī)器指令集\匯編指令集,所以匯編語言不具備可移植性
匯編語言的使用
- 工具開發(fā):可以實(shí)現(xiàn)AOT/JIT編譯、native調(diào)試器、內(nèi)存/性能剖析工具等。
- 性能優(yōu)化:有些特定場(chǎng)景,需要通過匯編調(diào)用CPU的專用硬件指令進(jìn)行優(yōu)化
- 分析問題:?jiǎn)尾礁櫮承﹩栴}的時(shí)候,需要能夠看懂一些匯編語句來分析程序真正執(zhí)行的流程
匯編語言的種類
-
目前討論比較多的匯編語言有
- 8086 匯編
- Win32匯編
- Win64匯編
- ARM匯編
iPhone用到的匯編是ARM匯編
| 架構(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 |
字和字節(jié)
* 字:一個(gè)字由兩個(gè)字節(jié)組成,分為高字節(jié)和低字節(jié)
* 字節(jié):byte,一個(gè)字節(jié)由8bit組成