ASM - 什么是“%”用于?

时间:2012-02-11 06:38:25

标签: assembly

"%"有什么用?在组装?例如,有时一条指令被写为:

movl%eax,%ebx

其他时候写成:

movl eax,ebx

(没有百分号)有什么区别?

2 个答案:

答案 0 :(得分:6)

对于所有汇编程序,当需要引用恰好与寄存器同名的符号时会出现问题。例如,如果你有一些C代码,其中包含函数“int eax()”,并将它与一些汇编代码“mov ebx,eax”链接,那么汇编程序需要知道“eax”是否为“eax”是寄存器还是函数。

为了解决不同的装配工做不同的事情。一些(例如NASM)将假设“eax”是寄存器并且将需要某种类型的前缀用于模糊符号(例如,“$ eax”来指代符号而不是寄存器)。其他(例如GAS)则相反,并在寄存器名称中添加前缀;有时即使根本没有歧义(例如“%eax”表示寄存器,“eax”表示符号)。

答案 1 :(得分:5)

X86 assembly syntax有不同的风格。带有%的那个被称为AT& T.另一个叫做英特尔。不同的汇编程序使用不同的语法。有些(气体)可以同时使用。