注:我使用的是基於BSD的系統,所以如果我沒記錯的話,這意味着對於調用的子程序ARGS /功能推到不放在寄存器堆棧操作碼的AT&T語法後綴是什麼?
我一直在嘗試組裝,我想嘗試我的簡單內核退出程序:
.globl _start
_start:
movl $0x20, %eax
pushl %eax
movl $0x1, %eax
subl $0x4, %esp
int $0x80
64位程序集。
我記得讀到一個很大的區別是寄存器現在改名爲r
而不是前綴的32位標準的前綴。
但是,什麼是64位的操作碼的新後綴,如果l
已經意味着長32位?
出於好奇,爲什麼它的r
前綴爲新註冊?
此外,如果有哪裏的進一步信息可以找到任何好的資源。或者教程,教程總是很有趣。
調用約定是比32位應用程序64個應用程序的不同,所以您將使用寄存器,而不是堆棧。有關詳細信息,請參閱[此答案](http://stackoverflow.com/a/2538212/458390)。四字的64位後綴是「q」。 'r'前綴可能是因爲AMD首先創建了64位擴展,所以英特爾沒有機會添加其他意思是「擴展」的字母。 – ughoavgfhw 2012-03-27 01:17:35