[Simh] BLISS ( was Re: 101 Basic Games for RSTS/E (was Re: PDP11 on Simh for public access))
Johnny Billquist
bqt at softjar.se
Fri Jan 26 16:59:40 EST 2018
On 2018-01-26 22:49, Timothe Litt wrote:
>
> On 26-Jan-18 14:45, Paul Koning wrote:
>> ent. I also do not know what they are doing with the front-ends.
>> One of the more curious front ends of GEM is the Alpha assembler. I found out about that when doing some Alpha hand-optimizing early on (a handcoded "memcpy with TCP checksum calculation while doing it" if I remember right). It turned out I could write drafts of that code and give it to the assembler with a /OPTIMIZE switch to let the back end take what I wrote and do stuff to it. It wasn't always right, but it was a neat source of ideas.
> Well, not exactly an optimizing assembler. It sort of looks like one.
> But the real story is that the Alpha port needed to deal with the large
> amount of MACRO-32 in VMS. The solution was to treat MACRO-32 as a
> compiled language, and generate a GEM front end for it. There was a lot
> of optimization that was absolutely required if you wanted tolerable
> code - e.g. most VAX instructions set condition codes, but they are
> rarely tested - and when tested, usually only a subset of those set are
> involved in the test. So tracking condition code generation and
> consumption is a big win. And when you look at address generation,
> there's a lot of opportunity for CSE elimination, and other
> optimizations. Then you wanted to schedule the generated code for Alpha
> - which is a lot of re-ordering, packing & the like.
>
> Then it was extended for the Alpha instruction set (psect attributes,
> instructions, etc).
>
> At this point, you have a compiler for low level language, that happens
> to look like assembler. Externally, perhaps a distinction without a
> difference; internally, quite different. And if you're unlucky enough
> to have to do instruction level debug, very different from traditional
> assembler.
>
> There also was the argument that you really couldn't (well, shouldn't)
> write pure assembler for Alpha because the best scheduling depends on
> the implementation (how many execution units, of what sorts & latencies;
> predictions, speculations, prefetch; etc.)
>
> PALcode has some unique constraints that do require manual scheduling,
> as do some diagnostics. But it does turn out to be true that Alpha
> assembler is best understood (and used) as a low-level compiled
> language, not an assembler.
Are we talking about MACRO-32 or Alpha assembler now? They are two
different things. PALcode, I would assume, you actually wanted an Alpha
assembler for. Porting lots of VMS stuff needed the MACRO-32 compiler.
Exactly what Paul was doing, and in which language, was a bit unclear to
me. I was assuming he was talking about Alpha assembler, and not
MACRO-32, but I could be wrong.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
More information about the Simh
mailing list