What does "x686" means?

hypeMarked

Senior member
Apr 15, 2002
708
0
71
I think the pentiums are x586, so what are x686? and are software written for 686 backward compatible with 586/486/etc...?

Thanks
 

Sunner

Elite Member
Oct 9, 1999
11,641
0
76
All P6 class CPU's, this would be Pentium Pro, P-II, and P-iii.
All Celerons up to 1.3 GHz are also included.
 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Originally posted by: hypeMarked
I think the pentiums are x586, so what are x686? and are software written for 686 backward compatible with 586/486/etc...?

Thanks
Software compiled for x686 is not backwards compatible(it is forward compatible though); it will use features not found in older CPUs
 

Sunner

Elite Member
Oct 9, 1999
11,641
0
76
Originally posted by: ViRGE
Originally posted by: hypeMarked
I think the pentiums are x586, so what are x686? and are software written for 686 backward compatible with 586/486/etc...?

Thanks
Software compiled for x686 is not backwards compatible(it is forward compatible though); it will use features not found in older CPUs

There's also the difference between -march and -mcpu.
If you do -march=i686 the code will use specific instructions from said family, and won't work on CPU's that lack them, say a 386.
-mcpu=i686 on the other hand will just tune the code for i686, but it will still run on lesser CPU's.

So, "-march=i383 -mcpu=i686" will run on any i386 compatible CPU but will be optimized for 686 class CPU's.
 

n0cmonkey

Elite Member
Jun 10, 2001
42,936
1
0
Originally posted by: Sunner
Originally posted by: ViRGE
Originally posted by: hypeMarked
I think the pentiums are x586, so what are x686? and are software written for 686 backward compatible with 586/486/etc...?

Thanks
Software compiled for x686 is not backwards compatible(it is forward compatible though); it will use features not found in older CPUs

There's also the difference between -march and -mcpu.
If you do -march=i686 the code will use specific instructions from said family, and won't work on CPU's that lack them, say a 386.
-mcpu=i686 on the other hand will just tune the code for i686, but it will still run on lesser CPU's.

So, "-march=i383 -mcpu=i686" will run on any i386 compatible CPU but will be optimized for 686 class CPU's.

And the benefits of either for most operations is negligable. ;)
 

Sunner

Elite Member
Oct 9, 1999
11,641
0
76
Originally posted by: n0cmonkey
Originally posted by: Sunner
Originally posted by: ViRGE
Originally posted by: hypeMarked
I think the pentiums are x586, so what are x686? and are software written for 686 backward compatible with 586/486/etc...?

Thanks
Software compiled for x686 is not backwards compatible(it is forward compatible though); it will use features not found in older CPUs

There's also the difference between -march and -mcpu.
If you do -march=i686 the code will use specific instructions from said family, and won't work on CPU's that lack them, say a 386.
-mcpu=i686 on the other hand will just tune the code for i686, but it will still run on lesser CPU's.

So, "-march=i383 -mcpu=i686" will run on any i386 compatible CPU but will be optimized for 686 class CPU's.

And the benefits of either for most operations is negligable. ;)

That's an entirely different issue ;) :p
 

hypeMarked

Senior member
Apr 15, 2002
708
0
71
Thanks you for the informative info everyone. I'm asking this question because I plan to run postgresql on my old computer which will have redhat9 install on it pretty soon. The old computer's cpu is a pIII, and the postgresql build available for redhat seems to be built for i686. Here's what I mean:

http://bt.postgresql.org/redhat/redhat-9/

The file names there contains "i686" does this mean it is build for i686 cpus?
 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Originally posted by: hypeMarked
Thanks you for the informative info everyone. I'm asking this question because I plan to run postgresql on my old computer which will have redhat9 install on it pretty soon. The old computer's cpu is a pIII, and the postgresql build available for redhat seems to be built for i686. Here's what I mean:

http://bt.postgresql.org/redhat/redhat-9/

The file names there contains "i686" does this mean it is build for i686 cpus?
It's either optimized for i686 CPUs, or it's flat out built for i686 CPUs(you can't absolutely tell without asking the dev or running it), but since your target machine is a P3 anyhow, it makes no difference. The P3 is a 686 class CPU.
 

n0cmonkey

Elite Member
Jun 10, 2001
42,936
1
0
What did it go?
i386 = 386 (duh)
i486 = 486, AMD k5(?), most early cyrixes (?)
i586 = pentium, Pentium MMX(?), AMD k6, more recent cyrix chips
i686 = pentium pro, pentium 2, pentium 3, AMD athlon, VIA C3

Something like that anyhow.