不同的平臺(tái)的匯編代碼是不一樣的,最早的匯編在50年代就發(fā)明了,比很多人的父母的年齡都大,老掉牙,不用學(xué)習(xí)怎么寫匯編。一個(gè)公司有一個(gè)人知道怎么寫匯編就夠了。但要學(xué)習(xí)讀匯編
為什么學(xué)習(xí)匯編?
1 性能 直接翻譯為機(jī)器語言,性能最高。優(yōu)秀的C語言效率只能達(dá)到匯編的80%左右。其他高級(jí)語言跟匯編一比差得更遠(yuǎn)。語言越高級(jí)性能越差。很多bootloader和BIOS用匯編寫,匯編操作的是電腦,手機(jī)剛剛上電時(shí),硬件和初始化的那些命令,它們的性能的要求比較高,效率高開機(jī)速度更快。
2 分析問題。個(gè)人認(rèn)為,編程人與機(jī)器對(duì)話,我們寫C,寫JAVA,但是電腦并不認(rèn)識(shí)這些語言,電腦只認(rèn)識(shí)0和1;所以需要一個(gè)人來翻譯這些語言,這個(gè)翻譯官就是編譯器,但是編譯器不能百分之百準(zhǔn)確的表達(dá)程序員的意思,也就是所謂的翻譯有反義。例如,編譯器為了性能好一點(diǎn),可能會(huì)優(yōu)化變量和語句,這個(gè)過程可能好心辦壞事,把有用的操作優(yōu)化了。因此只有看懂一些匯編語句,才能分析程序真正執(zhí)行的流程。在問題難以定位的情況下,匯編可能是分析問題的最后一根稻草。
3 幫助理解硬件。有些學(xué)校的單片機(jī)課程是以匯編進(jìn)行教學(xué)的,主要原因就是匯編更貼近硬件。不過我不贊成這種做法,C語言能快速做出一點(diǎn)東西,有利于學(xué)生在放棄之前,增加成就感,好堅(jiān)持下去。但是匯編確實(shí)更貼近硬件,
如何在KEIL下閱讀匯編
按d進(jìn)入debug模式,在view下選擇disassembly window
看光標(biāo),c文件下指向了main函數(shù)的第一行。 匯編窗口也指向了對(duì)應(yīng)的語句。但是,在執(zhí)行C語言的第一行之前,仍然有許多操作要做,比如變量放在哪?在哪里調(diào)用了main函數(shù)等,這些操作都被集成開發(fā)環(huán)境IDE給封裝起來了。我們必須知道,在執(zhí)行main函數(shù)之前,有許多事情要做,只不過,初學(xué)的時(shí)候不必理會(huì)。 以下是C語言源碼,功能是點(diǎn)亮LED.
匯編窗口往上翻,確實(shí)很多語句。
先看這幾行代碼的匯編 看光標(biāo),c文件下指向了main函數(shù)的第一行。 匯編窗口也指向了對(duì)應(yīng)的語句。但是,在執(zhí)行C語言的第一行之前,仍然有許多操作要做,比如變量放在哪?在哪里調(diào)用了main函數(shù)等,這些操作都被集成開發(fā)環(huán)境IDE給封裝起來了。我們必須知道,在執(zhí)行main函數(shù)之前,有許多事情要做,只不過,初學(xué)的時(shí)候不必理會(huì)。 以下是C語言源碼,功能是點(diǎn)亮LED.
匯編窗口往上翻,確實(shí)很多語句。