I was wondering why the above gcc parameter does not enable the use of the fst/fld opcodes for pentium processors, while -march=i686 does. The Intel manuals specifically say that they can be used across all pentium processors.
Example : $ gcc -g -c -mcpu=i586 mdouble.cpp -o mdouble.o $ objdump -dS -M intel mdouble.o <...> void foo() { 0: 55 push ebp 1: 89 e5 mov ebp,esp 3: 83 ec 10 sub esp,0x10 double d; double a; d = 3.0; 6: b8 00 00 00 00 mov eax,0x0 b: ba 00 00 08 40 mov edx,0x40080000 10: 89 45 f8 mov DWORD PTR [ebp-8],eax 13: 89 55 fc mov DWORD PTR [ebp-4],edx a = d; 16: 8b 45 f8 mov eax,DWORD PTR [ebp-8] 19: 8b 55 fc mov edx,DWORD PTR [ebp-4] 1c: 89 45 f0 mov DWORD PTR [ebp-16],eax 1f: 89 55 f4 mov DWORD PTR [ebp-12],edx } 22: c9 leave 23: c3 ret While : $ gcc -g -c -mcpu=i686 mdouble.cpp -o mdouble.o $ objdump -dS -M intel mdouble.o <...> void foo() { 0: 55 push ebp 1: 89 e5 mov ebp,esp 3: 83 ec 10 sub esp,0x10 double d; double a; d = 3.0; 6: dd 05 00 00 00 00 fld ds:0x0 c: dd 5d f8 fstp QWORD PTR [ebp-8] a = d; f: dd 45 f8 fld QWORD PTR [ebp-8] 12: dd 5d f0 fstp QWORD PTR [ebp-16] } 15: c9 leave 16: c3 ret FLD and FSTP are available on all pentium processors. Is there a chance, for other reasons, that my code will not run on a pentium if I use -march=i686 ? Thanks for any help on this, Peter -- ------------------------------------------------------------------------ Peter Soetens, Research Assistant http://www.orocos.org Katholieke Universiteit Leuven Division Production Engineering, tel. +32 16 322773 Machine Design and Automation fax. +32 16 322987 Celestijnenlaan 300B [EMAIL PROTECTED] B-3001 Leuven Belgium http://www.mech.kuleuven.ac.be/pma ------------------------------------------------------------------------