我一直在嘗試使用Hacking:Art of Deception書來學習彙編和編程。它有一個很棒的編程部分,可以讓你更好地理解程序的內部工作原理,並讓你更好地理解程序設計的重要性。不過,我一直都很難接受,因爲本書使用32位示例,我使用的是64位系統。我知道如何使用gcc編譯爲32位,或者我也調整到隨本書提供的32位光盤,但我想我寧願學習64位,因爲它可能比32位系統更相關(或變得越來越相關? )。所以基本上我想問的是,如果我甚至打算使用本書來計算64位彙編,因爲我聽說它有很大的不同,或者我應該找到其他材料來分別學習64位彙編。如果有任何關於64位英特爾彙編的易於理解的書籍,我將很感激您的參考。從32位指令學習64位彙編
-1
A
回答
1
像Lurker說的在上面的評論。由於你有一本32位的書,學習它。 32位仍然非常相關。
一旦你瞭解了32位的工作方式,那麼64位添加的內容將變得輕而易舉。
寄存器的數量增加了一倍至16
所有寄存器都是64位長。 IA32寄存器的64位擴展名爲%rax,%rcx,%rdx,%rbx,%rsi,%rdi,%rsp和%rbp。新的寄存器名爲%r8-%r15。
每個寄存器的低32位可以直接訪問。這給了我們熟悉的IA32寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp和%ebp,以及八個新的32位寄存器:%r8d-%r15d。
每個寄存器的低16位可以直接訪問,就像IA32的情況一樣。新寄存器的字大小版本被命名爲%r8w-%r15w。
每個寄存器的低8位可以直接訪問。在IA32中,只有前四個寄存器(%al,%cl,%dl,%bl)纔是這種情況。其他IA32寄存器的字節大小版本命名爲%sil,%dil,%spl和%bpl。新寄存器的字節大小版本被命名爲%r8b-%r15b。
爲了向後兼容,可以通過具有單字節操作數的指令直接訪問寄存器%rax,%rcx,%rdx和%rbx的第二個字節。
相關問題
- 1. 64位程序集的32位指令
- 2. 'atltime.h錯誤32位彙編詩句64位彙編
- 3. 32位指針在64位Solaris編譯
- 4. 指令錯誤,同時學習彙編
- 5. 學習32位程序集
- 6. 在64位ubuntu上編譯32位彙編程序
- 7. 從Win7編譯32位64位
- 8. 從32位變爲64位
- 9. 從32位到64位
- 10. C#指令指示的32位或64位建立
- 11. 在32位機器上實現64位算術 - 彙編代碼
- 12. 在Linux 64位上組合C和彙編(32位代碼)
- 13. 使用正確的第三方32位或64位彙編
- 14. 32位到64位內聯彙編移植
- 15. 在64位平臺上運行的32位彙編代碼
- 16. 編譯爲64/32位iOS
- 17. 32位Linux彙編代碼
- 18. XOR高32位,低32位,64位數
- 19. MySQL 32位或64位 - Apache 32位Windows 64位?
- 20. Linux 32位反彙編調用指令到下一個字節
- 21. OpenCL:GPU上的32位和64位popcnt指令?
- 22. 如何使用32位除法指令執行64位除法?
- 23. 編碼/在32位和64位
- 24. 在64位DMD上編譯32位
- 25. Java類編譯64位32位
- 26. 在64位Linux上編譯32位libGLEW.so
- 27. 將32位代碼編譯爲64位
- 28. 64位彙編介紹
- 29. 64位彙編問題
- 30. GNU彙編(Mac OS X的64位):非法指令:4
所以文本,我們正在談論x86和x64這裏?可能是?如果是這樣,他們真的沒有那麼不同。基本上是一樣的,真的。少於16bit到32bit的變化。 – harold
我不認爲這個論壇是正確的地方這個問題 –
這是基於意見的,但我的意見是,如果你已經有一本書來學習32位程序集,你不是一個龐大的程序集,值得學習。然後學習64位,你會理解和更多的差異。它將全面豐富您的體驗。但是你不能使用32位彙編手冊來學習64位彙編語言。 – lurker