Mail Archives: djgpp/2012/04/30/22:45:16
Hi,
On Apr 30, 12:01 am, Andris Pavenis <andris DOT pave DOT DOT DOT AT iki DOT fi> wrote:
> On 04/30/2012 06:12 AM, Claude Freeman wrote:
>
> > Since a lot of distros dropped 586 recently, I don't think anyone's noticed....
When was the last time that a Linux distro could actually run on a
real 586? Not recently, even the "lightweight" ones barely run on so-
called 686 anymore, esp. due to RAM or other reasons (drivers?). Hence
why people like Fedora 11 (switched to i586) quickly jumped to i686
for F12 (and newer). Though I personally (very highly!) doubt that
"i686" (bunch of CMOVxx) optimization does jack squat to help for
newer cpus.
> According to the bug reports for GCC it was noticed.
So why didn't they just revert back to a sane choice? It's quite a
silly regression.
> The problem is perhaps that few of developers have 586 any more and this problem most likely have
> very low priority now for them. It is actually detection which CPU features area available what is
> broken for 586. It is detecting that CMOV can be used when it is really not supported.
This is really not hard, just testing a few bits from CPUID. It's not
rocket science. But I gather that GCC developers are few (relatively)
compared to audience and they obviously have a lot of their plates
(billion architectures and OSes, though mainly focusing on POSIX).
> PS. You can of course try my build of GCC-4.7.0 for DJGPP (see http://ap1.pp.fi/djgpp/gcc/4.7.0/),
> but be warned that I do not know whether this problem is fixed neither I have any 586 system for
> testing. Also be warned that this version will perhaps be even more memory starved and slow on 586.
Since the OP is the one with the actual 586 he's trying to use, he
should do this (IMO, feel free to ignore):
1). Recompile something relatively simple like Gzip (or Bzip2) with
GCC 2.95.3 with "-O2 -march=pentium", and do a "redir -t gzip -d
random5mb.tgz".
2). Do the same but with GCC 4.7.0 (or 4.6.3 or 4.2.3 or whatever).
Though I would be surprised if it did anything better as I doubt much
has changed (if anything!!!) in 586 optimizations since then.
So unless you really want newer language standards (C++, Ada) or
features, I'd stick to older GCCs (or another compiler entirely or
even interpreter), esp. if you're just dinking around to learn C.
Though perhaps GCC 3.4.4 would be a good compromise. But on such an
"old" machine, it's just not reasonable to use latest GCC, IMO.
On my old P166, which I don't use due to broken floppy drive [among
other things], I just used both my own slimmed C-only 2.95.3 and full
3.4.4 for some other stuff [GPC]. Though it was a DOS-only machine,
heh, so I didn't have the overhead of Windows.
P.S. I should probably mention that, IIRC, 2.7.2.3's "GCC -O2" was as
fast (or faster) than 2.95.3's -O0. And 3.x obviously slowed down a
lot vs. 2.x, similar big slowdown for 4.x, so I dunno. Just try a few
things and get a feel for it. You're the one using it, so it's your
ultimate decision! (2.7.2.3 [1995-7] only did optimizations 386 or 486
[only added extra alignment], it was 2.8.1 [1998] that added
preliminary 586 optimizations [UV pairing], and 2.95.3 [1999-2001]
first added 686 support and was last of series before switch to 3.x.)
- Raw text -