AT&T 语法中的 3 或 4 参数 x86 程序集[重复]
Posted
技术标签:
【中文标题】AT&T 语法中的 3 或 4 参数 x86 程序集[重复]【英文标题】:3 or 4 parameter x86 assembly in AT&T syntax [duplicate] 【发布时间】:2012-12-17 17:18:03 【问题描述】:简单的问题。我怀疑这会受到很多关注,但是我如何在 AT&T (gAS) 语法中的 x86-64 汇编中进行 3 或 4 个参数操作?任何使用 gAS 的 x86 程序员都知道参数是切换的,例如:
xor eax, ebx ; Intel (xASM)
xorl %ebx, %eax ; AT&T (gAS)
但是我该怎么做,说:
blendpd xmm0, xmm1, 5
我的意思是,说明书是怎么写的?我知道会有%xmm0
等(仍然是参数的前缀),但是它们是如何排序的以及我在指令末尾添加什么后缀(movl
中的l
用于32位)?
【问题讨论】:
【参考方案1】:AT&T 等价物是操作数顺序颠倒的地方:
blendpd $5, %xmm1, %xmm0
如果您不确定是否始终可以使用 Intel 语法进行编译,则反汇编为 AT&T。
【讨论】:
我如何拒绝 AT&T? 另外,说明书上的后缀在哪里? 后缀不是必需的,因为大小可以从目的地推断出来。您可以使用objdump -Dslx BINARY
反汇编为 AT&T 语法。或者用gcc -S
查看组装阶段(不确定你使用的是什么编译器)。
但即使这样也有一个:xorl %eax, %eax
...
见Instruction Naming。以上是关于AT&T 语法中的 3 或 4 参数 x86 程序集[重复]的主要内容,如果未能解决你的问题,请参考以下文章