Я написал следующую простую программу, но nasm отказывается ее компилировать.
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
Как я прочитал в этом ответ, это потому, что str
является мнемоника инструкции. Поэтому я добавил двоеточие к str
, и теперь он компилируется нормально. Но как насчет линии
mov rsi, str
str
здесь является мнемоникой инструкции, но все равно компилируется нормально. Почему?
mov rsi, mov
иmov: db 'something'
и nasm не будет жаловаться - person Tommylee2k   schedule 07.12.2017