Kezdőlap › Fórumok › Programozás › Forráskód nem hordozható?
- This topic has 80 hozzászólás, 9 résztvevő, and was last updated 16 years, 7 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2008-12-15-22:18 #2177788
A gcc ezt mondja:
gcc version 4.3.1 20080507 (prerelease)A csomagkezelő meg ezt:
4.3-39.12008-12-15-22:18 #2177789A gcc ezt mondja:
gcc version 4.3.1 20080507 (prerelease)A csomagkezelő meg ezt:
4.3-39.12008-12-15-23:21 #2177790uzsolt wrote:zoltan22 wrote:„gcc fajlnev.c -O3”-al mar 10-bol 10-szer NaN az eredmeny.Baromi sok
Code:a: 1.000000, b: 2.000000az eredményem… Én sose fogok a gépemen NaN-t látni? ???
Az előzőekben neked sem lett 1.0. (Gondolom nem -O3-mal fordítottad, mert az más kódot generál.)
Ha a függvényen belül létrehozol egy változót az úgy fog kinézni, hogy az aktuális stack mutatóból fog levonni a változónak megfelelő értéket, tehát pl. ha egy 32 bites adat van ott, akkor 4 byte-ot, ha két 32 bites és a másodikat akarod elérni, akkor 8-at. (És attól függ, hogy előzőleg mi maradt ott.)
Az O3-mal más ahelyzet, mert ott összegyűjti egy helyre (globálisan) a változókat és egy (16 byte-os határral rendelkező) kód szegmensbe „csomagolja ki” és valószínűleg feltölti 0-val. Ez utóbbi meg (asm.) makró függő, tehát megint fordító kérdése. No, meg egyes műveleteket átcsoportosít és/vagy kihagy… többek között. Ez más eredményt hoz, az utóbbiak nélkül is.De pl. egy 0 visszatérési értéket is elő lehet másképp állítani. Pl. egy borland c „xor eax,eax” módon, amíg egy gcc „mov eax,0” módon állít elő. (Persze lehet, hogy Ox-szel másképp állítja elő.) Ez nem okoz más eredményt, de más a kód: gyorsabb/lassabb/kisabb/nagyobb.
Ajánlom, hogy te is nézegesd a pornót hexában és minden meg fog világosodni. :))))
2008-12-15-23:21 #2177791uzsolt wrote:zoltan22 wrote:„gcc fajlnev.c -O3”-al mar 10-bol 10-szer NaN az eredmeny.Baromi sok
Code:a: 1.000000, b: 2.000000az eredményem… Én sose fogok a gépemen NaN-t látni? ???
Az előzőekben neked sem lett 1.0. (Gondolom nem -O3-mal fordítottad, mert az más kódot generál.)
Ha a függvényen belül létrehozol egy változót az úgy fog kinézni, hogy az aktuális stack mutatóból fog levonni a változónak megfelelő értéket, tehát pl. ha egy 32 bites adat van ott, akkor 4 byte-ot, ha két 32 bites és a másodikat akarod elérni, akkor 8-at. (És attól függ, hogy előzőleg mi maradt ott.)
Az O3-mal más ahelyzet, mert ott összegyűjti egy helyre (globálisan) a változókat és egy (16 byte-os határral rendelkező) kód szegmensbe „csomagolja ki” és valószínűleg feltölti 0-val. Ez utóbbi meg (asm.) makró függő, tehát megint fordító kérdése. No, meg egyes műveleteket átcsoportosít és/vagy kihagy… többek között. Ez más eredményt hoz, az utóbbiak nélkül is.De pl. egy 0 visszatérési értéket is elő lehet másképp állítani. Pl. egy borland c „xor eax,eax” módon, amíg egy gcc „mov eax,0” módon állít elő. (Persze lehet, hogy Ox-szel másképp állítja elő.) Ez nem okoz más eredményt, de más a kód: gyorsabb/lassabb/kisabb/nagyobb.
Ajánlom, hogy te is nézegesd a pornót hexában és minden meg fog világosodni. :))))
2008-12-15-23:27 #2177792Nem is beszélve arról, hogy egy sebesség optimalizáció mit művel a ciklusokkal, meg a kód méretével.
Amúgy állítólag az újabb gcc-ken (általánosságban) az O2 adja a leggyorsabb kódot. (Persze hozzáértéssel lehet módosítani a dolgokon… ha valaki ismeri a gcc paramétereket… van egy pár. :))))2008-12-15-23:27 #2177793Nem is beszélve arról, hogy egy sebesség optimalizáció mit művel a ciklusokkal, meg a kód méretével.
Amúgy állítólag az újabb gcc-ken (általánosságban) az O2 adja a leggyorsabb kódot. (Persze hozzáértéssel lehet módosítani a dolgokon… ha valaki ismeri a gcc paramétereket… van egy pár. :))))2008-12-15-23:31 #2177794Az alapok elsajátításához is van egy kis röffenet.
http://alien.dowling.edu/~rohit/nasmdoc0.html2008-12-15-23:31 #2177795Az alapok elsajátításához is van egy kis röffenet.
http://alien.dowling.edu/~rohit/nasmdoc0.html2008-12-16-07:45 #2177796A hosszú, unalmas esték ideje nem most van 😉
2008-12-16-07:45 #2177797A hosszú, unalmas esték ideje nem most van 😉
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz