Por que o NASM não tem problemas com mnemônicos de instruções válidos como nomes de símbolos em operandos?
Eu escrevi o seguinte programa simples, mas o nasm se recusa a compilá-lo.
section .text
global _start
_start:
mov rax, 0x01
mov rdi, 0x01
mov rsi, str
mov rdx, 0x03
syscall
mov rax, 60
syscall
segment .data
str db 'Some string'
nasm -f elf64 main.asm
main.asm:15: error: comma, colon, decorator or end of line expected after operand
Como eu li nesteresponda isto é porquestr
é uma instrução mnemônica. Então eu adicionei dois pontos parastr
e agora compila bem. Mas e a linha
mov rsi, str
str
é uma instrução mnemônica aqui, mas ainda compila bem. Por quê?