From: qa=F0=FDl=20=DEeker?= (cagils@biznet.com.tr)
Date: Tue 15 Apr 2003 - 09:10:11 EEST
bu listeye çok sık bakmıyorum. O yüzden geç olmuş olabilir.
evet GCC 3.2.x -march=pentium4 sorunlu.
1) -march=pentium3 -mcpu=pentium4 gercekten de bir arada kullanilabilir. Bunu
su sekilde gozlemleyebilirsiniz:
$ cat test.c
int main() {return 0;}
$ gcc -v -Q test.c -march=pentium3
.....
etkin seçenekler: -fpeephole -ffunction-cse -fkeep-static-consts
-fpcc-struct-return -fgcse-lm -fgcse-sm -fsched-interblock -fsched-spec
-fbranch-count-reg -fcommon -fgnu-linker -fargument-alias -fident
-fmath-errno -ftrapping-math -m80387 -mhard-float -mno-soft-float
-mieee-fp -mfp-ret-in-387 -mcpu=pentium3 -march=pentium3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Goruldugu gibi -march secenegi -mcpu'yu da etkinlestiriyor. Simdi de sizin
kullandiginiza bakalim:
$ gcc -v -Q test.c -march=pentium3 -mcpu=pentium4
.....
etkin seçenekler: -fpeephole -ffunction-cse -fkeep-static-consts
-fpcc-struct-return -fgcse-lm -fgcse-sm -fsched-interblock -fsched-spec
-fbranch-count-reg -fcommon -fgnu-linker -fargument-alias -fident
-fmath-errno -ftrapping-math -m80387 -mhard-float -mno-soft-float
-mieee-fp -mfp-ret-in-387 -mcpu=pentium4 -march=pentium3
Bu iki secenek birarada kullanilabiliyor yukarıdaki sekilde. -march pentium3
bayragi pentium3'den daha alt-seviyedeki islemcilerde kullanilamayacak bir
kod uretiyor. (Daha ust seviyedekilerin geriye donuk uyumlu olduklari icin bu
kodu calistirabilir tabi).
-mcpu pentium4 bayragi ise bellek-align'larını, stack kullanimini ve buna
benzer optimizasyonlari isleyiciye uygun hale getirir. Bu ayarlarin
isleyiciye uygun olmamasi kodun calismamasina (ya da daha alt islemcilerde
calismamasina) neden olmaz, sadece yavas calismasina neden olur.
Bu iki bayrak birlikte kullanildiginda pentium4'e gore optimize edilmis,
pentium3 isleyici komutları ve ABI'si (Application Binary Interface) kullanan
bir kod elde edilmis olur.
2) binutils, glibc gibi sistem paketleri world profilinde yer almazlar, system
profilinde yer alirlar. Bunun icin 'emerge -ev system' komutunu
kullanmalisiniz.
Umarim yardimci olabilmisimdir.
Cagil Seker
On Thu 3 April 2003 16:09, you wrote:
> Selamlar;
> GCC 3.2.x in -march=pentium4 kontrol bayrağı ile hatalı binary kodlar
> ürettiğini okudum. Floating Point işlemlerinde gerçekten hatalı işlemler
> gerçekleştiriyor.Mesela php ile bu kod <? printf("%f",12.32); ?> 00.00
> çıktısı veriyor. Biraz araştırma yaptıktan sonra "-march=pentium3"
> kullanılmasının problemi çözdüğünü gördüm. Sormak istediğim şu;
>
> 1.) "-march=pentium3 -mcpu=pentium4 -03 -pipe -fomit-frame-pointer" kontrol
> bayrağınında kullanılmasında bir sakınca olmadığını yazmışlar. Yanlış
> bilmiyorsam "march" bayrağı işlemciye özel kod üretirken "mcpu" bayrağı
> geriye dönük kod uygunluğunu koruyor. Bu durumda iki bayrak bir arada nasıl
> kullanılabilir?
>
> 2.)Gentoo'da herşeyi yeni kontrol bayrakları ile derlemek için emerge -e
> world komutu kullanılıyor.Fakat glibc,binutils v.s gibi çoğu paket world
> listemde bulunmuyor. Bu yeniden derleme işlemini nasıl gerçekleştirmeliyim?
> Sistemi stage1 den tekrar mı kurmalıyım(sonuçta GCC 3.2.x'de march=pentium4
> kullanılarak 2.9.x ile derlendi :) )
>
> Saygılar
> ************************************
> S.Çağlar Onur - Tübitak
> Avrupa Birliği Altıncı Çerçeve Programı
> web: http://www.fp6.org.tr/
> e-mail: caglar.onur@tubitak.gov.tr
> tel: 0 312 468 53 00 / 1502
> ************************************
-- Attached file included as plaintext by Ecartis --
-- Desc: signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQA+m6JH2vimYSO6dGkRAohNAKCwInd2FXFXit6Fvk7UzRj74U9hJACcC5sR
G8Sto0azkza7NE50zX//UlQ=
=ASoi
-----END PGP SIGNATURE-----