我是新來的彙編語言,並希望瞭解。我有Vista-64(將升級到Windows 7 64),我將很快重新安裝32位Linux,但我最終會在兩個系統上編程,可能使用NASM。我想知道32位彙編程序是否會在我的系統上編譯和運行。如果不是,主要區別和侷限性是什麼,我可以在哪裏學習在64位系統上編程?開始組裝
Q
開始組裝
0
A
回答
2
NASM不支持64位(或等待,是它最近添加的支持?)。我推薦YASM,它與NASM非常相似,但它更加活躍,我相信支持更多的平臺。
64位程序集編程是相當於不同於32位(假設你說的是x86)。所有內存訪問現在都是相對於RIP而言的,而不是絕對的(沒有特定的覆蓋)。我會建議先學習32位編程,因爲這裏有更多的文檔。我不建議同時學習!
此外,我認爲使用Linux會更容易,因爲它更容易與標準C庫接口(除非你想成爲一個人並進行系統調用)。
此外,對於64位系統,64位系統上的windows和linux的調用約定是不同的。這是您與現有庫進行交互時必須注意的事項。
編輯: 哦,是的,64位Vista將運行32位程序就好(iirc,你可以檢測到你在64位操作系統的32位模式)。我強烈建議僅在Linux和Vista上開發32位,因爲它們具有相同的調用約定(iirc),因此任何用於與C庫接口的代碼都可以在大多數情況下獨立於平臺。
0
64位Vista將運行32位可執行文件就好了
0
他們應該工作,但要記住,通常彙編代碼是特定於平臺的,所以對於Linux編寫的彙編代碼不會大概在Windows上安裝。
相關問題
- 1. 開始執行NSIS安裝
- 2. 開始與一個數組
- 3. XSL按分組開始 -
- 4. 開始SQL組和由AVG
- 5. 列表組合開始
- 6. Netezza按周開始(星期日)和月開始分組
- 7. 讓菜單開始在數組的開始
- 8. Android開始開始
- 9. 安裝開始時ClassPathNotFound錯誤?
- 10. Debian安裝程式沒有開始
- 11. Jetty不從開始安裝ckan ubuntu 14.04
- 12. CRNA項目卡在「開始包裝商」
- 13. Appium不與非sudo的安裝開始
- 14. 從頭開始重新安裝OpenCV
- 15. JSF開始+安裝UI錯誤
- 16. 安裝後如何從db2開始
- 17. 如何安裝並獲得webrtc開始
- 18. XAMPP開始給我安裝XAMPP錯誤
- 19. VS安裝項目 - 安裝組件到GAC並開始使用它們都在同一個安裝
- 20. 從開始開始活動
- 21. 從docker開始npm開始?
- 22. 開始從開始的foreach
- 23. 會話開始不「開始」
- 24. 如何繼續從重啓時的安裝點開始安裝?
- 25. 開始爲Android開發,我應該選擇安裝哪些SDK?
- 26. Javascript關聯數組鍵與開始0
- 27. PLPGSQL數組索引從1開始?
- 28. Firefox SDK附加組件 - 如何開始
- 29. 從頭開始創建數組列表
- 30. 如何獲得開始NSIS組件
總是存在接口與libc ..這是很難做彙編抽象,但絕對有可能 – Earlz 2009-11-16 23:32:54
@earlz:你說什麼!操作系統之間的區別主要是系統調用接口。當然,CPU運行操作碼,所以這些在操作系統上是相同的。 64位的語法不同於32(寄存器名稱等),所以就是這樣。在Linux上,通常的彙編程序使用AT&T語法,而不是使用Microsoft語法的NASM。我也會在Windows上推薦OP使用氣。 (gas = gnu彙編程序) – 2009-11-16 23:35:10
我覺得天然氣要困難得多,對於沒有經驗的用戶來說更加神祕。我確信他有知識做一個'pkg_add yasm'。大多數教授初學者彙編的書教英特爾語法不是AT&T。 – Earlz 2009-11-16 23:38:16