我有一個簡單的程序NASM只調用sys_exit
:NASM編程 - `int0x80`與`INT 0x80`
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
那麼這個程序 - 我寫的原始程序是什麼,缺少空間 - 呢?在NASM中int0x80
(沒有空格)是什麼意思?
segment .text
global _start
_start:
mov eax, 1
mov ebx, 0
int0x80 ; no space...
發生,如果'INT 0x80的什麼'之後被調用? – 2011-03-25 02:08:37
@pst - 好主意! *嘗試它*似乎正常執行!即使我添加了一個「sys_write」系統調用以使其成爲「Hello World」程序......就像'int0x80'甚至不存在:O – 2011-03-25 02:13:42
您的意思是分割錯誤消失了嗎? – BoltClock 2011-03-25 02:17:33