我试图理解$如何在nasm中运作。我读了this answer并写了以下示例:
section .text
global _start
_start:
mov rax, 0x01
mov rdi, 0x01
mov rsi, str
mov rdx, str_len
syscall
mov rax, 60
syscall
segment .data
str: db 'Some string',0x0a,0x0d
str_len: equ $ - str
该程序按预期工作。它打印
Some string
但如果我将equ
替换为db
segment .data
str: db 'Some string',0x0a,0x0d
str_len: db $ - str ; equ --> db
它开始打印大量垃圾数据:
Some string
�@`
```"`)`main.asmstrstr_len__bss_start_edata_end.symtab.strtab.shstrtab.text.data�'!`' .