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