Пытаюсь скомпилить в убунте 64 следующий код:
section	.text
   global _start    ; необходимо для линкера (ld)
	
_start:	            ; сообщает линкеру стартовую точку
   mov	edx,len     ; длина строки 
   mov	ecx,msg     ; строка
   mov	ebx,1       ; дескриптор файла (stdout)
   mov	eax,4       ; номер системного вызова (sys_write)
   int	0x80        ; вызов ядра
	
   mov	eax,1       ; номер системного вызова (sys_exit)
   int	0x80        ; вызов ядра 
 
section	.data
msg db 'Hello, world!', 0xa  ; содержимое строки для вывода
len equ $ - msg              ; длина строки
$ nasm -f elf64 hello.asm 
$ ld -m elf_x86_64 -s -o hello hello.o
$ ./hello
Segmentation fault (core dumped)
Если собрать для elf_i386:
bash: ./hello: cannot execute binary file: Exec format error
Я что-то делаю не так? Или код кривой? Взял его отсюда https://ravesli.com/assembler-bazovyj-sintaksis/







