Related articles |
---|
Re: variable length instructions, was Chicken or the Egg? debray@CS.Arizona.EDU (2000-10-12) |
Re: variable length instructions, was Chicken or the Egg? michael@moria.de (2000-10-12) |
Re: variable length instructions, was Chicken or the Egg? vbdis@aol.com (2000-10-15) |
Re: variable length instructions, was Chicken or the Egg? cfc@world.std.com (Chris F Clark) (2000-10-18) |
Re: variable length instructions, was Chicken or the Egg? dietrich@216.26.55.26 (Dietrich Epp) (2000-10-19) |
Re: variable length instructions, was Chicken or the Egg? michael@moria.de (2000-10-19) |
Re: variable length instructions, was Chicken or the Egg? david.thompson1@worldnet.att.net (David Thompson) (2000-10-19) |
Re: variable length instructions, was Chicken or the Egg? michael@moria.de (2000-10-23) |
From: | michael@moria.de |
Newsgroups: | comp.compilers |
Date: | 12 Oct 2000 22:30:45 -0400 |
Organization: | Compilers Central |
Keywords: | linker, comment |
In article 00-10-073 you write:
> [Generating instructions with variable length addresses is a well understood
> problem. The PDP-11 Unix assembler did it in about 1973, and there was
> a paper by Tom Szymanski in the CACM about that time. I always preferred
> the other approach, start with everything long, then shorten until there's
> nothing left to shorten, which has the advantage of being fail-safe, all
> of the intermediate stages being valid code. -John]
The reason for starting with short instructions is that you usually get a
smaller executable, e.g. if you have relative jumps that need to jump
over their own instruction size. If you start with a long instruction,
it increases the distance and may just cross the border of needing a long
instruction. On the other side, a short instruction decreases the jump
distance, which in turn lets a short instruction suffice to encode it.
If you encode arbitrary constants with variable length instructions, you
can construct worst cases for each algorithm, but AFAIR most constants
are relative addresses, where starting with short instructions is better.
Michael
[I know that it's theoretically possible for a program to have more than one
fixed point, but I've never seen it happen in real code. Have you? -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.