gcc: long long a asm

Zbynek Vyskovsky rat na atrey.karlin.mff.cuni.cz
Čtvrtek Květen 27 20:15:29 CEST 1999


On Thu, May 27, 1999 at 07:15:56PM +0200, Vojta Filip wrote:
> > spravil som si programcek, ktory mi tie registre vypisal. vyzera to takto:
> > ESI=0x00000000
> > EDI=0xbffffb60
> > EBX=0xbffffb40
> > 
> > v preklade do slovenciny je ESI asi pointer na zaciatok pamati alebo podobna
> > hovadina, EDI je 4A0 od konca zasobnika a EBX 480 od konca. co konkretne tam
> > je bude treba pozriet asi v zdrojakoch c0, ktore tu teraz nemam..
> > 
> 
> Zkoumal jsem par C zdrojaku prelozenych do asm a prislo mi ze je pouziva
> na jine veci. Spise by me zajimalo, kde sehnat nejaky presny popis
> volaci konvence gcc na i386. Prohledaval jsem prozatim predevsim jen
> info, ale tam jsem to nenalezl.

 Tyto registry slouzi k ulozeni lokalnich (a docasnych) promennych a ukladaji
se proto, ze funkce pocitaji s tim, ze jim je jina volana funkce pri volani
nezmeni.  Krome toho je take zakazano modifikovat ebp (viz
-fomit-frame-pointer).
 (to, ze obsahovaly zrovna uvedene hodnoty, je v jistem smyslu nahoda).

 Volaci konvence na i386 je takova, ze se vsechny parametry ukladaji na stack
v poradi posledni parametr-prvni parametr. Pokud je specifikovan
__attribute__(stdcall) (asi), tak se pouziva obracene poradi.
 Tohle je default, da se nastavit atributem regparam, ze se maji az 3
parametry predavat v registrech.

 Vice viz 'info -fgcc' a atributy funkci.

-- 
	Zbynek Vyskovsky
		rat na atrey.karlin.mff.cuni.cz
		http://atrey.karlin.mff.cuni.cz/~rat


Další informace o konferenci Linux