2009-11-16 32 views
0

我是新來的彙編語言,並希望瞭解。我有Vista-64(將升級到Windows 7 64),我將很快重新安裝32位Linux,但我最終會在兩個系統上編程,可能使用NASM。我想知道32位彙編程序是否會在我的系統上編譯和運行。如果不是,主要區別和侷限性是什麼,我可以在哪裏學習在64位系統上編程?開始組裝

回答

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

總是存在接口與libc ..這是很難做彙編抽象,但絕對有可能 – Earlz 2009-11-16 23:32:54

+0

@earlz:你說什麼!操作系統之間的區別主要是系統調用接口。當然,CPU運行操作碼,所以這些在操作系統上是相同的。 64位的語法不同於32(寄存器名稱等),所以就是這樣。在Linux上,通常的彙編程序使用AT&T語法,而不是使用Microsoft語法的NASM。我也會在Windows上推薦OP使用氣。 (gas = gnu彙編程序) – 2009-11-16 23:35:10

+0

我覺得天然氣要困難得多,對於沒有經驗的用戶來說更加神祕。我確信他有知識做一個'pkg_add yasm'。大多數教授初學者彙編的書教英特爾語法不是AT&T。 – Earlz 2009-11-16 23:38:16