在gnu装配标签前面有一个美元符号的含义是什么?
例如,mov msg, %si
和mov $msg, %si
(有关更多背景信息,我正在使用x86裸机示例:https://github.com/cirosantilli/x86-bare-metal-examples/blob/master/bios_hello_world.S)
#include "common.h"
BEGIN
mov $msg, %si
mov $0x0e, %ah
loop:
lodsb
or %al, %al
jz halt
int $0x10
jmp loop
halt:
hlt
msg:
.asciz "hello world"
(What do the dollar ($) and percentage (%) signs represent in assembly intel x86?讨论了寄存器之前的%和常量之前的$的一般用法;但是,我认为它不会像下面的答案一样清楚地使用带标签的$。
答案 0 :(得分:6)
在寻址常数时使用$(美元)符号,例如:
movl $1, %eax
(将1
置于%eax
注册)
或者在处理某个变量的地址时,例如:movl $var, %eax
(这意味着地址 var
标签并将其放入{{1注册)。
如果您不使用美元符号,这意味着“从 %eax
标签中获取值并将其注册”。