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