2013-12-19 128 views
0

我期待學習彙編語言。彙編語言的類型

我在網上搜索了教程,發現了不同的組裝語法不同的教程。

8086 assembler,nasm和gcc有什麼區別?

用匯編語言學習代碼的更好方法是什麼?

謝謝。

回答

1

基本上x86芯片組有兩種風格,分別是AT&TIntel snytax。我認識的大多數人更喜歡英特爾語法,因爲它更容易理解,但當然這也是習慣的問題。當我在6510或M68000上學習彙編時,發現AT & T語法更緊密相關,因此它在地址模式IMO中相當混亂。

如果指示的gcc寫的組件的資源文件,它使用AT默認& T語法,但你可以切換到英特爾使用

gcc -S -masm=intel test.c 

nasm以及是一個彙編和gcc是一個編譯器,使他們有不同的目的。

至於學習大會有很多的教程,例如The Art of Assembly。但是如果你真的想學習它,IMO最好的辦法是開始debug並輸入一些指令,看看他們在做什麼以及他們如何改變reigsters和flags,先寫小循環。

通過這種方式,您可以專注於指令,而不會與彙編源語法爭執。

0

我不會從x86開始,即使您有硬件,也不是一個好的第一個指令集。 ARM,msp430,avr和其他一些更好,並有開源模擬器,您可以獲得更好的可視性。我會從小處着手,簡單地添加或添加幾個數字,寫一個內存位置,讀回它,如果是這樣的話。模擬器(可以)阻止你需要進行系統調用以「看到」你的結果,同樣他們也可以幫助你處理掛起和崩潰,你會得到什麼,以及哪些IMO導致放棄整個事情。一旦你知道了更多,你可以切換到硬件或嘗試另一個指令集(每個新指令集比前一個指數更容易)導致x86,如果你仍然覺得有需要......在x86中,我建議回到早期,找到一個8088/86模擬器,學習原始指令集,然後如果你仍然覺得需要,那麼跳到80386和更新。你也需要能夠在頭腦中轉換格式,使用AT & T是一個基本的罪惡(gnu彙編人員經常犯這些罪惡,這是幾乎預料中的),但不幸的是我們現在有這兩種競爭格式。通過練習,您應該能夠輕鬆地知道在檢查代碼時使用了哪種格式,但是精神上來回切換可能仍然是一個挑戰。