Trochu technictejsi dotaz
Pavel Machek
pavel na elf.ucw.cz
Sobota Červen 13 23:53:02 CEST 1998
Ahoj!
> mam otazku ohledne strojaku. Mozna je to trochu off-toipc, ale ne snad
> moc.
> Takze mam nasledujici vypis z gdb:
>
> (gdb) x/16xb 0x112403
> 0x112403: 0x6a 0x01 0x53 0x56 0xe8 0xcd 0x01 0x00
> 0x11240b: 0x00 0x8d 0x65 0xf8 0x5b 0x5e 0xc9 0xc3
> (gdb) x/9i 0x112403
> 0x112403: pushl $0x1
> 0x112405: pushl %ebx
> 0x112406: pushl %esi
> 0x112407: call 0x1125d9
> 0x11240c: leal 0xfffffff8(%ebp),%esp
> 0x11240f: popl %ebx
> 0x112410: popl %esi
> 0x112411: leave
> 0x112412: ret
> (gdb)
>
> a vubec mi neni jasne, jak to ze instrukce 'call 0x1125d9' je prelozena
> na E8 CD 01 00 00. V jedny knizce jsem se docetl, ze opcode E8 CD
> znamena
IMO je E8 sam osobe call rel32, coz by vse krasne vysvetlovalo.
> A jeste mi dovolte jeden dotaz. Kdyz vim, ze tento kod je na adrese
> 0x112403, jak z toho zjistim kde je ulozen fyzicky v souboru toho
> programu? Vim, ze je to v tom programu (ne v zadny knihovne) a je to a.out
> format (file rika: Linux/i386 demand-paged executable (QMAGIC), stripped).
> Samozrejme bych mohl prohledat ten soubor na vyse uvedenou
> posloupnost,
Coz je nejjednodussi a vetsinou chodi.
> ale to jde jen v pripade, ze je takhle dlouha. Kdyz se jedna treba o dve,
> tri kratke instrukce, tak jsem bez sance, protoze ty se tam vyskytuji
> mockrat.
Tak si opis kontext, ne?
Jinak modulo PAGE_SIZE by se mely zachovavat offsety.
Pavel
--
I'm really pavel na atrey.karlin.mff.cuni.cz. Pavel
Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-).
Další informace o konferenci Linux