В GNU Assembler текущий адрес представлен .
. Это позволяет установить константу / символ и использовать ее, как если бы это была метка, например:
.set offset, .
.long 0x10
.globl _start
_start:
# %eax should be 0x10
movl offset, %eax
# %ebx should be address of offset
movl $offset, %ebx
# Value at the address of offset should contain 0x20
movl $0x20, offset
Приведенный выше код ведет себя точно так же, как если бы offset
была меткой вместо символа.
Есть ли случаи, когда вышеприведенное не соответствует действительности, или label:
действительно просто сокращение для .set label, .
?