У меня есть следующий код:
format ELF64
public _start
msg db "hello, world", 0
len = $-msg
satrt:
mov rax, 4
mov rbx, 1
mov rcx, msg
mov rdx, len
int 0x80
call exit
exit:
mov rax, 1
mov rbx, 0
int 0x80
Я использую
fasm main.asm
в ответ я получаю:
flat assembler version 1.73.31 (16384 kilobytes memory, x64)
main.asm [2]:
public _start
processed: public _start
error: undefined symbol '_start'.
Я попытался заменить public на entry и global, но в ответ получил то же самое. Если я вообще избавлюсь от этой строки, компиляция завершится успешно, но затем ld выдает мне:
ld: warning: cannot find entry symbol _start; not setting start address
ld: warning: main has a LOAD segment with RWX permissions
Затем, запустив файл, я получаю
Segmentation fault (core dumped)
Моя ОС: Fedora 38
FASM version 1.73.31