Quality of VAX compilers

"Peter \"Firefly\" Lund" <firefly@diku.dk>
3 Jun 2006 18:56:36 -0400

          From comp.compilers

Related articles
Quality of VAX compilers firefly@diku.dk (Peter \Firefly\Lund) (2006-06-03)
Re: Quality of VAX compilers lkrupp@pssw.nospam.com.invalid (Louis Krupp) (2006-06-05)
Re: Quality of VAX compilers firefly@diku.dk (Peter \Firefly\Lund) (2006-06-07)
Re: Quality of VAX compilers jafred@verizon.net (John Fredrickson) (2006-06-07)
Re: Quality of VAX compilers gah@ugcs.caltech.edu (glen herrmannsfeldt) (2006-06-11)
Re: Quality of VAX compilers tom@kednos.com (Tom Linden) (2006-06-11)
Re: Quality of VAX compilers jvorbrueggen@mediasec.de (=?ISO-8859-1?Q?Jan_Vorbr=FCggen?=) (2006-06-12)
[3 later articles]
| List of all articles for this month |

From: "Peter \"Firefly\" Lund" <firefly@diku.dk>
Newsgroups: comp.compilers
Date: 3 Jun 2006 18:56:36 -0400
Organization: Department of Computer Science, University of Copenhagen
Keywords: history, question, comment
Posted-Date: 03 Jun 2006 18:56:36 EDT

I seem to have acquired an acute fascination with the VAX architecture.

As part of that, I'm curious to know about the quality and methods
employed by the old VAX compilers. Did they schedule the code? Did they
use link-time optimizations? Did they have tables on the costs of various
instructions? Did they have flags for targetting different members of the
VAX family? How good were their register allocators? Did they inline
functions? Did they generate alternate entrypoints where they could, in
order to avoid the horrid CALLS/CALLG/RET instructions? Could they pass
parameters in registers for functions that were only used "internally" in
a module/program?

What tricks did they employ to get decent floating-point performance out
of an architecture that wasn't really well-suited to that?

(16 "general-purpose registers, of which one was the PC, one was the SP,
and two others were also used by the system. Floating-point operations
used the same registers as integer operations, and double floating-point
used register pairs. This puts a rather low limit on what you can keep in

[As I recall, the answers to all of those questions was "sometimes", except
that I don't recall any that generated model-specific code. -John]

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.