1
Iは、GCC 686-ELFクロスコンパイラでループのための非常に簡単に分解するアセンブリjmpオフセット<label + offset>はどういう意味ですか?
objdump -M intel -d test
と
objdump -d test
を用います。私どちらの場合も、私は次を得る:
d: eb 11 jmp 20 <loop+0x20>
完全なダンプ(インテル)がある:20を相殺するためにジャンプした場合
00000000 <loop>:
0: 55 push ebp
1: 89 e5 mov ebp,esp
3: 83 ec 10 sub esp,0x10
6: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0
d: eb 11 jmp 20 <loop+0x20>
f: a1 00 00 00 00 mov eax,ds:0x0
14: 83 c0 01 add eax,0x1
17: a3 00 00 00 00 mov ds:0x0,eax
1c: 83 45 fc 01 add DWORD PTR [ebp-0x4],0x1
20: 83 7d fc 09 cmp DWORD PTR [ebp-0x4],0x9
24: 7e e9 jle f <loop+0xf>
26: 90 nop
27: c9 leave
28: c3 ret
これは理にかなって、0であるラベルのループから
私は構文が混乱しています。なぜ私は2つの20を持っていますか?
「jmp」は相対的なものであり、絶対的なものではないことに注意してください。だから、アドレスではなく*オフセット*です。 –
私はそれを修正します。ありがとうございました。 – Makketronix
それはどのようにそのオフセットに到着したかを伝えています。 –