¿Por qué NASM no tiene problemas con las instrucciones nemotécnicas válidas como nombres de símbolos en operandos?
Escribí el siguiente programa simple, pero nasm se niega a compilarlo.
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 leí en estoresponder esto es porquestr
Es una instrucción mnemónica. Entonces agregué dos puntos astr
y ahora se compila bien. Pero que hay de la linea
mov rsi, str
str
es una instrucción mnemónica aquí, pero aún se compila bien. ¿Por qué?