From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Cc: Dan Shearer <dan@shearer.org>
Subject: Re: [Qemu-devel] replacing dyngen (was: S/390 host fixed)
Date: Wed, 1 Aug 2007 15:23:45 +0100 [thread overview]
Message-ID: <200708011523.47446.paul@codesourcery.com> (raw)
In-Reply-To: <20070801135849.GK16020@erizo.shearer.org>
On Wednesday 01 August 2007, Dan Shearer wrote:
> On Wed, Aug 01, 2007 at 02:02:13AM +0100, Paul Brook wrote:
> > I suspect making dyngen handle jump tables is not going to happen.
>
> Which brings up the question of dyngen. Very clever and a very good way
> of bootstrapping QEMU in the early days, but too brittle going forwards
> now the rest of QEMU works so well.
>
> You had an alternative approach to dyngen, pointed at here:
> http://lists.gnu.org/archive/html/qemu-devel/2006-10/msg00227.html
>
> Any thoughts about the future of hand-coded backends in QEMU? I wasn't
> convinced at first (and, given resources, it isn't nearly as good as a
> special-purpose language for describing CPUs at this level) but I now
> think your work is a very good solution for bootstrapping QEMU to the
> next level of users.
There's also a goolge SoC project to use llvm for code generation.
http://code.google.com/p/llvm-qemu/
This works, however it's also significantly slower than current qemu (no more
than half the speed). It may be possible to improve this, but llvm is a
fairly heavyweight framework so I'm not convinced it is ever going to be
competitive for generalexecution speed.
One interesting thing that did come out of that project is that it's fairly
trivial (a few hours work) to turn the existing code into a simple
interpreter. Obviously this incurs a large performance hit, but also makes
qemu trivially portable to other hosts.
My hand coded generator is currently ~20% slower that dyngen.
I still think this (or something similar) is the way forward, however I
haven't made time to do any work on it recently. Some parts of this code
effectively are a "special language" for describing a CPU, that happen to be
implemented using the C preprocessor :-)
Paul
next prev parent reply other threads:[~2007-08-01 14:23 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-30 11:49 [Qemu-devel] [PATCH] S/390 host fixed Ulrich Hecht
2007-07-30 12:37 ` Sunil Amitkumar Janki
2007-07-30 14:05 ` Ulrich Hecht
2007-07-31 23:59 ` Thiemo Seufer
2007-08-01 1:02 ` Paul Brook
2007-08-01 13:58 ` Dan Shearer
2007-08-01 14:23 ` Paul Brook [this message]
2007-08-01 14:31 ` [Qemu-devel] replacing dyngen (was: S/390 host fixed) Dan Shearer
2007-08-01 14:47 ` Paul Brook
2007-08-01 13:44 ` [Qemu-devel] [PATCH] S/390 host fixed Ulrich Hecht
2007-09-13 4:21 ` Thiemo Seufer
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=200708011523.47446.paul@codesourcery.com \
--to=paul@codesourcery.com \
--cc=dan@shearer.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).