У меня есть простая программа NASM, которая вызывает только sys_exit
:
segment .text
global _start
_start:
mov eax, 1 ; 1 is the system identifier for sys_exit
mov ebx, 0 ; exit code
int 0x80 ; interrupt to invoke the system call
Когда я впервые написал ее, я сделал ошибку и забыл пробел между int
и 0x80
:
int0x80
... но программа все равно скомпилировалась без проблем!
[prompt]> nasm -f elf MyProgram.asm
[prompt]> ld -o MyProgram MyProgram.o
Это просто дало мне ошибку сегментации при запуске!
[prompt]> ./MyProgram
Segmentation fault
Так чтоделает эту программу - оригинальную, которую я написал, с отсутствующим местом - делает?Что означает int0x80
(без пробелов) в NASM?
segment .text
global _start
_start:
mov eax, 1
mov ebx, 0
int0x80 ; no space...