syscallを終了して%ebxの内容を返さない?ガスでコンパイル
私は%ebx
レジスタの内容は、私のプログラムのステータスコードとして返されていないされている非常に奇妙な問題、に実行したとき、I出口のシステムコールを作成します。ここに関連コードがあります。ここでは、レジスタのダンプは、単にシステムコールの前にある:
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
の8進数で終了します。これを引き起こす原因は何か。それがどのようにこの問題に影響を与えるのか分かりませんが、もっとコードを投稿する必要があるかどうかを教えてください。
Ahh私はexit()が1バイトまでしか返さないことを忘れました。私の愚かさを修正してくれてありがとう。 – Jumhyn