PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compilier CPU Flags. Welches gilt für einen Athlon?


Catonga
26.07.01, 22:25
Hallo

In der GCC Doku http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC2
habe ich folgendes gelesen:

"2.14.15 Intel 386 Options
These `-m' options are defined for the i386 family of computers:


-mcpu=cpu type
Assume the defaults for the machine type cpu type when scheduling instructions. The choices for cpu type are:
`i386' `i486' `i586' `i686'
`pentium' `pentiumpro' `k6'


While picking a specific cpu type will schedule things appropriately for that particular chip, the compiler will not generate any code that does not run on the i386 without the `-march=cpu type' option being used. `i586' is equivalent to `pentium' and `i686' is equivalent to `pentiumpro'. `k6' is the AMD chip as opposed to the Intel ones.


-march=cpu type
Generate instructions for the machine type cpu type. The choices for cpu type are the same as for `-mcpu'. Moreover, specifying `-march=cpu type' implies `-mcpu=cpu type'.

-m386
-m486
-mpentium
-mpentiumpro
Synonyms for -mcpu=i386, -mcpu=i486, -mcpu=pentium, and -mcpu=pentiumpro respectively. These synonyms are deprecated. "

Leider steht da nicht dran, welches Flag bei einem Atlhon gilt.
Müßte ich da -mcpu=k6
nehmen oder gibts da schon ne extra Option für einen Atlhon (K7).

Immerhin ist ein K6 eher ein Pentium also 586 als ein Rechner der Athlon (686) Klasse.

Tosk
27.07.01, 06:55
hallo Catonga,

es gibt zumindest für meinen gcc-2.96 noch einen weiteren flag:-march=athlon

redhat kennt auch den host-type athlon-pc-linux-gnu.

wie das nun beim gcc-2.95.3 ist, kann ich nicht sagen, damals hatte ich noch keinen athlon ;) aber wenn es nicht funktioniert, dann nimm lieber den i686-falg als den k6-flag...

Tosk

Catonga
27.07.01, 15:42
Ok, also wenn

-march=athlon

nicht gehen sollte, dann werd
ich


-march=i686

probieren.

Wie ist das ansonsten noch mit der Stabilität
des Binary Codes, wenn man CPU Flags wie diese beim compilieren gesetzt hat?
Wie ist deine Erfahrung in dem Fall?

Danke

Nicolas
27.07.01, 22:11
Gibt es eigentlich auch einen Compilerflag für den Pentium III?

Munick
27.07.01, 22:22
@Nicolas:

-march=i686 und -mcpu=i686 sind die Compileroptionen für den Pentium III

CU

berell
27.07.01, 22:27
frage :
erkennt gcc nicht den prozessor automatich ??
jedenfalls wenn ich ne config starte sehe ich dann immer irgendwo was mit for i686 usw.

wenn mer schon dabei sind :
gibt es noch andere optionen das system zu beschleunigen z.b -O2 oder so ähnlich
und kann mit die per FLAGS mitteilen ?

-bernd

Catonga
27.07.01, 23:21
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von Munick:
<STRONG>@Nicolas:

-march=i686 und -mcpu=i686 sind die Compileroptionen für den Pentium III

CU</STRONG>[/quote]

Wenn diese Flags für den Pentium 3 sind,
wiso soll man dann dieses Flag für einen Athlon verwenden.

Athlon und Pentium 3 sind doch völlig unterschiedlich, was heißen kann, das eine für den P3 compilierte Software gar nicht auf dem Athlon läuft.


Und gilt i686 nicht eher für den Pentium 2 ?


Pentium = i586
Pentium MMX = i568
Pentium Pro = i686
Pentium 2 = i686

Pentium 3 = i786 ???
Pentium 4 = i886 ???

Munick
27.07.01, 23:47
Die Option -march=i686 soll man deswegen für den Athlon benutzen, da es keine -march=athlon Option im gcc-2.95.x gibt. Die gibt es erst im gcc-3.0 (den gcc-2.96 gibt es offiziell ja nicht), den ich noch nicht verwenden will.
Desweiteren unterscheiden sich der Pentium II und der Pentium III nicht sonderlich, sondern basieren IIRC beide noch auf dem PentiumPro.

Und Athlon und PIII unterscheiden sich nicht sonderlich, da beides x86er sind. Der wesentliche Unterschied zwischen beiden liegt an speziellen Befehlssätzen (MMX vs ISSE).

An der Stabilität der Binaries ändert sich nach meiner Erfahrung nichts.

@berell: -O3 ist noch optimierter. Allerdings siund die Binaries dann so optimiert, daß sie wahrscheinlich auf anderen Computern nicht unbedingt laufen und core dumps erzeugen. Und nicht jedes Programm läßt sich mit dieser Option kompilieren (wiederum core dumps).
Ich versuche auf meinem LFS alles mit -O3 zu kompilieren und hatte bisher noch kaum Probleme.

CU

berell
30.07.01, 15:02
AHA so is das also
Danke ar das wollt ich wissen .

-bernd

Ilja
30.07.01, 23:24
zur ergänzung @berell:

der gcc erkennt den rechner-typ nicht automatisch. das erledigt meist das ./configure-script und schreibt den typ in das Makefile. würde gcc den typ automatisch erkennen wäre keine cross-kompilierung möglich.