gcc 4.6.2 では、使用されていないと見なされるコードが関数から削除されているようです。
test.c
int main(void) {
goto exit;
handler:
__asm__ __volatile__("jmp 0x0");
exit:
return 0;
}
の分解main()
0x08048404 <+0>: push ebp
0x08048405 <+1>: mov ebp,esp
0x08048407 <+3>: nop # <-- This is all whats left of my jmp.
0x08048408 <+4>: mov eax,0x0
0x0804840d <+9>: pop ebp
0x0804840e <+10>: ret
コンパイラ オプション
最適化は有効になっていませんgcc -m32 -o test test.c
(-m32
私は 64 ビット マシンを使用しているため)。
どうすればこの動作を止めることができますか?
編集:コードを変更するのではなく、コンパイラオプションを使用することをお勧めします。