美元符号在gnu集合标签中的含义
问题描述:
gnu集合标签前面的美元符号是什么意思?美元符号在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?讨论一般使用%之前的寄存器和$之前常量;但是,我不认为它使用$标签几乎与下面的答案一样清晰)
答
您使用$(美元)符号寻址的常数,例如,当: movl $1, %eax
(放1
到%eax
寄存器) 或处理一些变量的一个地址时,例如:movl $var, %eax
(这意味着取var
标签的地址,放入%eax
寄存器)。 如果你不要使用美元符号,这意味着“将的值从var
标签并把它注册”。
+0
这是有道理的。如果是这样的话,那么jmp使用的标签也不应该以$开头? – Zack
在汇编intel x86中代表美元($)和百分比(%)符号表示的可能重复项是什么?](http://stackoverflow.com/questions/9196655/what-do-the-dollar-and-百分比符号代表在组装intel-x86) –