SPECS: libjsw.spec (HEAD)

Jakub Bogusz qboosh w pld.org.pl
Nie, 2 Lut 2003, 19:37:55 CET


On Sun, Feb 02, 2003 at 11:50:33AM +0100, Tomasz Kłoczko wrote:
> On Sun, 2 Feb 2003, Jakub Bogusz wrote:
> 
> > On Sun, Feb 02, 2003 at 02:40:59AM +0100, Tomasz Kłoczko wrote:
> > > On Sun, 2 Feb 2003, qboosh wrote:
> > > [..]
> > > > -	CFLAGS="-shared %{rpmcflags} -fomit-frame-pointer -funroll-loops -ffast-math"
> > > > +	CFLAGS="%{rpmcflags} %{!?debug:-fomit-frame-pointer} -funroll-loops -ffast-math -fPIC"
> > > 
> > > -fomit-frame-pointer przypadkiem nie jest używane domyślnie ?
> > 
> > Nie na x86.
> > Polecam opis -O2 w info lub man gcc.
> 
> Ciekawe .. właśnie na libjsw spróbowałem. Wyszło mi że z 
> -fomit-frame-pointer libjsw.so wyszło 57838 bajtów a bez 52654.

Z -O2? Coś duża różnica.

> W sumie 
> powinno raczje być odwrotnie bo -fomit-frame-pointer powinno obcinać o ile 
> to mozliwe ramkę funkcji:

Ale odwołania do parametrów i zmiennych lokalnych przez %esp zamiast
%ebp są IIRC o 1 bajt dłuższe. Do tego offsety do parametrów mogą być
dłuższe (4 zamiast 1 bajtu), jeśli zmienne lokalne mają więcej niż
kilkadziesiąt bajtów.

> Tak czy inaczej dodawanie jawne -fomit-frame-pointer chyba raczje nie ma 
> sensu (?).

Tam gdzie jest istotna szybkość, ma (w libjsw nie bardzo widzę sens
silnych optymalizacji - szczególnie rozwijania pętli).

Oraz w drugim przypadku - -fomit-frame-pointer na x86 zwalnia jeden
rejestr, a rejestrów ogólnego przeznaczenia na x86 jest mało. Bywa to
niezbędne - jeśli fragment kodu napisany w asemblerze wymaga 6 (z -fPIC)
lub 7 (bez -fPIC) rejestrów. Mamy co najmniej jeden taki pakiet.


-- 
Jakub Bogusz    http://www.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl