|
|
|
Re: LinuxAsmTools Announcement | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
OH~~~ great,thx for u help,that really a tip. 2008/12/19 Brian Raiter <breadbox@xxxxxxxxxxxxxx>: >> when i disassemble *.o object file on x86 machine and find >> instruction "call 0xFCFFFFFF",because not link,but why this address >> 0xFCFFFFFF not 0xFFFFFFFF or others? > > First of all, the value is not 0xFCFFFFFF, it's 0xFFFFFFFC > (little-endian), which is the 32-bit equivalent of -4. > > And the reason for the -4 is that it's an offset. When the linker > fills in the real address, it will subtract the subroutine's absolute > address from the address of the -4 value to get a relative address, > which it will then add to the existing -4 to get the correct relative > address for the call instruction. And, the reason that 4 needs to be > subtracted is that when the call is executed, it will actually jump > from the end of the call instruction, which is 4 bytes ahead of where > the relative address is stored. > > b > > -- To unsubscribe from this list: send the line "unsubscribe linux-assembly" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
[Kernel Newbies] [Security] [Linux C Programming] [Linux for Hams] [DCCP] [Netfilter] [Bugtraq] [Photo] [Yosemite] [Yosemite News] [MIPS Linux] [ARM Linux] [Linux RAID] [Linux Admin] [Samba] [Video 4 Linux]
![]() |