All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: jhoger@pobox.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] get_func() hangs with gcc 3.4.2 on MinGW and WinXP host
Date: Sun, 19 Dec 2004 15:45:40 +0100 (CET)	[thread overview]
Message-ID: <Pine.LNX.4.58.0412191525350.3165@wgmdd8.biozentrum.uni-wuerzburg.de> (raw)
In-Reply-To: <1103404056.21895.83.camel@aragorn>

Hi,

On Sat, 18 Dec 2004, John R. Hogerhuis wrote:

> On Sat, 2004-12-18 at 06:59, Johannes Schindelin wrote:
>
> > What do new gcc's do? Why is it impossible to chain the code? Do you have
> > an example object file, or even better, an assembly snippet?
>
>
> The op.c primitives are, well, primitive... at some point consideration
> should be given to simply giving up.
>
> That is, code the primitives in native assembler for each target CPU.

NOOOOO! Did you -- even once -- look at op.s? It is a *big* file. A
quick glance at my reasons for the "NOOOOO!":

- it is a *lot* of work.
- you loose *all* of C's type safety.
- it is much too easy to miss (even unintentional) bugs.
- it is not at all portable.
- it is a maintenance nightmare.

> Certainly the C compiler is being well leveraged at present to do smart
> things like allocating registers, but a decent assembly programmer will
> make just as good or better decisions than gcc.

No. That's just not true. It might have been true with 80x86 up to 80286,
but even the earliest Pentia had several pipeline and caching quirks which
made it virtually impossible to beat very good compilers.

And this is only for Intel platforms. Ask *anybody* with MIPS experience.
There are probably just under 20 people (some claim it's more like 5) on
this planet who could beat the compiler -- and this only in case of short
functions.

One very strong point about QEmu is that it's very portable. Not only is
it easier to find strange bugs using different platforms (if you don't
believe me, I can give you very good examples), but it is important for
the main purpose of an emulator: to run on newer machines.

I agree with you on your point about least resistance. But as a Bazaar
project we have the big advantage that our quality doesn't suffer from
silly deadlines or plain dumb suits (yes, I mean all those business types
who don't have a clue about the subject they're deciding). We should make
it clear to the gcc people that there is a demand for the feature
we're seeking, namely to force the use of exactly one ret.

BTW is there a way to declare an external label? We could replace all
returns in op.c by "jmp exit_label", and parse for this instead of "ret",
if that works.

Ciao,
Dscho

  parent reply	other threads:[~2004-12-19 14:56 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-15 13:47 [Qemu-devel] get_func() hangs with gcc 3.4.2 on MinGW and WinXP host tomba
2004-12-15 14:18 ` Johannes Schindelin
2004-12-15 14:59   ` tomba
2004-12-15 23:45     ` Jim C. Brown
2004-12-15 23:52       ` Johannes Schindelin
2004-12-17 18:56         ` Juergen Lock
2004-12-18  0:09           ` Johannes Schindelin
2004-12-18  4:04             ` Jim C. Brown
2004-12-18 14:59               ` Johannes Schindelin
2004-12-18 15:50                 ` Jim C. Brown
2004-12-19 14:25                   ` Johannes Schindelin
2004-12-19 22:57                     ` Jim C. Brown
2004-12-18 21:07                 ` John R. Hogerhuis
2004-12-18 21:59                   ` Jim C. Brown
2004-12-19 14:45                   ` Johannes Schindelin [this message]
2004-12-20  6:26                     ` John R. Hogerhuis
2004-12-20 15:16                       ` Removing GCC dependency, was " Johannes Schindelin
2004-12-20 18:02                         ` John R. Hogerhuis
2004-12-20 23:30                           ` Fabrice Bellard
2004-12-21 14:36                             ` [Qemu-devel] Testing with Win2k SP3 and Win2kSP4 Elefterios Stamatogiannakis
2004-12-21 15:23                             ` [Qemu-devel] Re: Removing GCC dependency Paul Brook
2004-12-21 15:36                               ` Herbert Poetzl
2004-12-19 22:13           ` [Qemu-devel] get_func() hangs with gcc 3.4.2 on MinGW and WinXP host Fabrice Bellard
2004-12-19 22:29             ` Johannes Schindelin
2004-12-20  3:31               ` Rob Browning
2004-12-20 18:57                 ` John R. Hogerhuis
2005-01-17 14:16                   ` CMinusMins, was " Johannes Schindelin
2005-01-17 15:36                     ` malc
2005-01-17 15:53                       ` Jim C. Brown
2005-01-17 16:13                         ` OCAML, was " Mark A. Williamson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.58.0412191525350.3165@wgmdd8.biozentrum.uni-wuerzburg.de \
    --to=johannes.schindelin@gmx.de \
    --cc=jhoger@pobox.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.