x64 call instruction E8 00 00 00 00?
Trass3r
un at known.com
Thu Jan 5 11:57:16 PST 2012
Thanks for shedding some light on this.
I wonder though why disassembling "works" in some cases and
sometimes not:
>int foo()
>{
> asm
> {
> naked;
> mov RAX, 1;
> }
>}
>void main()
>{
> int i = foo();
>}
yields
>0000000000000000 <_Dmain>:
> 0: 55 push rbp
> 1: 48 8b ec mov rbp,rsp
> 4: e8 00 00 00 00 call 9 <_Dmain+0x9>
> 5: R_X86_64_PC32 _D4test3fooFZi-0x4
> 9: 31 c0 xor eax,eax
> b: 5d pop rbp
> c: c3 ret
while
>void foo() {}
>void bar() {foo();}
turns into
>0000000000000000 <_D5test23barFZv>:
> 0: 55 push rbp
> 1: 48 8b ec mov rbp,rsp
> 4: e8 00 00 00 00 call 9 <_D5test23barFZv+0x9>
> 5: R_X86_64_PC32 _D5test23fooFZv-0x4
> 9: 5d pop rbp
> a: c3 ret
More information about the Digitalmars-d
mailing list