本文只是為了做學(xué)習(xí)記錄方便以后不斷復(fù)習(xí)查看焕数,不具有任何其他用途柔昼,如要轉(zhuǎn)發(fā)請標(biāo)注原文出處狭握,原文地址http://www.reibang.com/p/0cfcf7cddbb5
匯編語言的發(fā)展
機(jī)器語言
由0和1組成的機(jī)器指令.
如:0101 0001 1101 0110
匯編語言(assembly language)
使用符號代替機(jī)器語言,也稱為符號語言
如:mov ax,bx
高級語言
C\C++\Java\OC\Swift,更加接近人類的自然語言
如:int a = b;
我們的代碼在終端設(shè)備上是這樣的過程:
image.png
匯編語言與機(jī)器語言一一對應(yīng)堵幽,每一條機(jī)器指令都有與之對應(yīng)的匯編指令
匯編語言可以通過編譯得到機(jī)器語言拟淮,機(jī)器語言可以通過反匯編得到匯編語言
高級語言可以通過編譯得到匯編語言\機(jī)器語言干茉,但匯編語言\機(jī)器語言幾乎不可能還原成高級語言
匯編語言的特點(diǎn)
可以直接訪問、控制各種硬件設(shè)備很泊,比如存儲(chǔ)器角虫、CPU等,能最大限度地發(fā)揮硬件的功能
能夠不受編譯器的限制委造,對生成的二進(jìn)制代碼進(jìn)行完全的控制
目標(biāo)代碼簡短戳鹅,占用內(nèi)存少,執(zhí)行速度快
匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對應(yīng)昏兆。每一種CPU都有自己的機(jī)器指令集\匯編指令集枫虏,所以匯編語言不具備可移植性
知識(shí)點(diǎn)過多,開發(fā)者需要對CPU等硬件結(jié)構(gòu)有所了解,不易于編寫隶债、調(diào)試腾它、維護(hù)
不區(qū)分大小寫,比如mov和MOV是一樣的
匯編的用途(哥么我學(xué)了能干啥?)
編寫驅(qū)動(dòng)程序燃异、操作系統(tǒng)(比如Linux內(nèi)核的某些關(guān)鍵部分)
對性能要求極高的程序或者代碼片段携狭,可與高級語言混合使用(內(nèi)聯(lián)匯編)
軟件安全
病毒分析與防治
逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\黑客
理解整個(gè)計(jì)算機(jī)系統(tǒng)的最佳起點(diǎn)和最有效途徑
為編寫高效代碼打下基礎(chǔ)
弄清代碼的本質(zhì)
函數(shù)的本質(zhì)究竟是什么?
sizeof
++a + ++a + ++a 底層如何執(zhí)行的?
編譯器到底幫我們干了什么?
DEBUG模式和RELEASE模式有什么關(guān)鍵的地方被我們忽略
......
最后來句裝13的話
越底層越單純!真正的程序員都需要了解的一門非常重要的語言,匯編!
匯編語言的種類
目前討論比較多的匯編語言有
8086匯編(8086處理器是16bit的CPU)
Win32匯編
Win64匯編
ARM匯編(嵌入式、Mac回俐、iOS)
......
我們iPhone里面用到的是ARM匯編,但是不同的設(shè)備也有差異.因CPU的架構(gòu)不同.
架構(gòu)設(shè)備
armv6iPhone, iPhone2, iPhone3G, 第一代逛腿、第二代 iPod Touch
armv7iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4
armv7siPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64iPhone6s , iphone6s plus,iPhone6, iPhone6 plus,iPhone5S ,iPad Air, iPad mini2
因?yàn)閷W(xué)習(xí)所以建議先從最為經(jīng)典的8086開始
結(jié)構(gòu)簡潔,容易理解
指令簡單,便于記憶
原理相通
幾個(gè)必要的常識(shí)
要想學(xué)好匯編,首先需要了解CPU等硬件結(jié)構(gòu)
APP/程序的執(zhí)行過程
image.png
硬件相關(guān)最為重要是CPU/內(nèi)存
在匯編中,大部分指令都是和CPU與內(nèi)存相關(guān)的
作者:請叫我Hank
鏈接:http://www.reibang.com/p/0cfcf7cddbb5
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)仅颇,非商業(yè)轉(zhuǎn)載請注明出處单默。