GNU ARM匯編--(一)開(kāi)篇
他們首先用三個(gè)問(wèn)句來(lái)引出為什么要學(xué)習匯編:
外科醫生為了知道手術(shù)刀的用法而需要學(xué)習冶金嗎?飛行員需要學(xué)習熱力學(xué)理論來(lái)理解飛機引擎是如何工作的?報社的記者要學(xué)習電子學(xué)來(lái)理解照相機如何工作的?答案當然是“NO”,那么為什么要讓學(xué)生學(xué)習匯編語(yǔ)言和計算機結構呢?
第一就是教育和培訓不是一碼事,大學(xué)就應該學(xué)大學(xué)里該教的內容,當然學(xué)生也得好好學(xué).
第二是匯編語(yǔ)言是計算機體系結構和計算機軟件的基礎
第三:匯編可以幫助我們更好的理解數據類(lèi)型,指針,堆棧、函數調用、遞歸調用以及參數傳遞,匯編可以更直接的訪(fǎng)問(wèn)IO和設備,幫助理解設備驅動(dòng)等等.
總之匯編會(huì )告訴我們計算機系統內部正在發(fā)生什么
而按照目前我個(gè)人的體會(huì )是:
學(xué)習匯編可以讓我更好的寫(xiě)C,學(xué)習匯編可以讓我更好的理解loader,學(xué)習匯編可以讓我更好的理解進(jìn)程和內存管理,虛擬存儲器和存儲器映射等知識.總之,好處多多.目前匯編成了我的一個(gè)瓶頸,那搞定它可以讓我上一個(gè)臺階.
接下來(lái)學(xué)習匯編的環(huán)境為:操作系統為ubuntu,編譯器是arm-linux-gcc,平臺是s3c2440(ARM920).
ARM匯編的指令集就那些,但是windows下的arm匯編和linux的arm匯編有細微區別.windows下是用ADS codewarrir等環(huán)境來(lái)開(kāi)發(fā),編譯器是armasm,而linux用的是gnu arm,更個(gè)接近于A(yíng)T&T風(fēng)格.偏向于linux下的環(huán)境,所以就選擇了GNU ARM匯編.
學(xué)習GNU ARM匯編的計劃和目標:
ARM體系結構
ARM下的指令集
GNU匯編的風(fēng)格
在s3c2440平臺上的驗證
當然最終的目的還是為了學(xué)習loader和linux.
開(kāi)始吧,新的學(xué)習目標~~~
評論