我很想知道是否有任何特殊的GAS语法来实现相同的功能,如在NASM示例中:
SECTION .data
msg: db "Hello World",10,0 ; the 0-terminated string.
len: equ $-msg ; "$" means current address.
Run Code Online (Sandbox Code Playgroud)
特别是我对$代表当前地址的符号感兴趣.
这是我的汇编级代码...
section .text
global _start
_start mov eax, 4
mov ebx, 1
mov ecx, mesg
mov edx, size
int 0x80
exit: mov eax, 1
int 0x80
section .data
mesg db 'KingKong',0xa
size equ $-mesg
Run Code Online (Sandbox Code Playgroud)
输出:
root@bt:~/Arena# nasm -f elf a.asm -o a.o
root@bt:~/Arena# ld -o out a.o
root@bt:~/Arena# ./out
KingKong
Run Code Online (Sandbox Code Playgroud)
行中的$是多少size equ $-mesg。有人请解释一下所用$符号...
表达式是:
times 512-($-$$) db 0
Run Code Online (Sandbox Code Playgroud)
我知道美元符号意味着什么,但我不知道它是什么意思.
双美元符号是什么意思?
message db "Enter a digit ", 0xA,0xD
Length equ $- message
Run Code Online (Sandbox Code Playgroud)
它用于获取字符串的长度吗?
它在内部如何运作?
我看到如下代码:
section .data
db 'hello'
db 'h', 'e', 'l','l','o'
data_segment_size equ $-$$
Run Code Online (Sandbox Code Playgroud)
为什么data_segment_size等于25?我知道$和$$表示什么,但是根据我的书我不明白为什么这个变量是25。也许那本书里有一个错误。