Ассемблер GNU (64-разрядная версия Mac OS X): недопустимая инструкция: 4

Я новичок в GNU Assembler и пытаюсь выполнить этот фрагмент кода:

.globl _main
_main:
    movl $1, %eax
    movl $0, %ebx
    int $0x80

Эта программа должна завершиться системным вызовом exit (1). Скомпилировал (без предупреждений):

gcc test.s

Но при запуске выдает ошибку: Illegal instruction: 4

Спасибо за помощь!


person qwertz    schedule 24.06.2012    source источник


Ответы (1)


Если вы компилируете 64-битный исполняемый файл, вы должны написать что-то вроде этого:

movq $0x2000001, %rax
movq $0, %rdi
syscall

Источник.

person Alexey Frunze    schedule 24.06.2012
comment
Правильно, я только что заметил, что он запускается, если я компилирую для 32-битной версии. Спасибо! - person qwertz; 24.06.2012