2012-12-17 62 views
0

簡單的問題。我懷疑這會受到很多的關注,但是如何在ATXT(gAS)語法的x86-64程序集中做3或4個參數操作?據瞭解,以任何x86的程序員使用天然氣的論據是切換,例如:AT&T語法中的3或4參數x86彙編

xor eax, ebx ; Intel (xASM) 
xorl %ebx, %eax ; AT&T (gAS) 

但我會怎麼做,說:

blendpd xmm0, xmm1, 5 

我的意思是,如何說明書面?我知道會有%xmm0等等(仍然是參數的前綴),但是它們是如何訂購的以及在指令末尾添加了什麼後綴(lmovl中爲32位)?

回答

4

的AT &牛逼相當於將其中操作數的順序是相反的:

blendpd $5, %xmm1, %xmm0 

如果你不確定你可以隨時與英特爾的語法編譯然後拆機AT & T.

+0

我會怎樣對AT&T感到不安? –

+0

另外,指令的後綴在哪裏? –

+1

後綴是沒有必要的,因爲可以從目的地推斷大小。您可以使用'objdump -Dslx BINARY'反彙編到AT&T語法。或者用'gcc -S'看看彙編階段(不知道你使用的是什麼編譯器)。 –