2017-04-24 132 views
2

gnu集合标签前面的美元符号是什么意思?美元符号在gnu集合标签中的含义

例如,是什么mov msg, %simov $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?讨论一般使用%之前的寄存器和$之前常量;但是,我不认为它使用$标签几乎与下面的答案一样清晰)

+2

在汇编intel x86中代表美元($)和百分比(%)符号表示的可能重复项是什么?](http://stackoverflow.com/questions/9196655/what-do-the-dollar-and-百分比符号代表在组装intel-x86) –

回答

1

您使用$(美元)符号寻址的常数,例如,当: movl $1, %eax(放1%eax寄存器) 或处理一些变量的一个地址时,例如:movl $var, %eax(这意味着取var标签地址,放入%eax寄存器)。 如果你不要使用美元符号,这意味着“将的值从var标签并把它注册”。

+0

这是有道理的。如果是这样的话,那么jmp使用的标签也不应该以$开头? – Zack