1
在Ubuntu Linux操作系統,32位x86處理器,配氣編譯退出系統調用不返回%ebx的內容?
我碰到一個很奇怪的問題,其中%ebx
寄存器的內容不被返回我的程序的狀態代碼時,我使退出系統調用。這是相關的代碼。這裏只是系統調用前寄存器的轉儲:
eax 0x1 1
ecx 0x804a00c 134520844
edx 0xff 255
ebx 0x159 345
esp 0xbffff3bc 0xbffff3bc
ebp 0xbffff3c0 0xbffff3c0
esi 0x0 0
edi 0x0 0
eip 0x80480c6 0x80480c6 <num_loop_end+5>
eflags 0x246 [ PF ZF IF ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x0 0
和相關的彙編代碼:
0x080480c1 <+0>: mov $0x1,%eax
=> 0x080480c6 <+5>: int $0x80
寄存器轉儲發生在上述=>
。但是,我的程序不是返回345作爲狀態代碼,而是以八進制代碼89
或0131
退出。什麼可能導致這種情況。讓我知道我是否應該發佈更多的代碼,但我不知道這會如何影響這個問題。
啊我忘了exit()只返回一個字節。感謝您糾正我的愚蠢。 – Jumhyn 2012-03-16 14:11:21