Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!apple!julius.cs.uiuc.edu!wuarchive!zaphod.mps.ohio-state.edu!sdd.hp.com!hplabs!hpfcso!mjs From: mjs@hpfcso.HP.COM (Marc Sabatella) Newsgroups: comp.lang.misc Subject: Re: Re: Aggressive optimization Message-ID: <8960020@hpfcso.HP.COM> Date: 30 Oct 90 16:01:16 GMT References: <2301@wn1.sci.kun.nl> Organization: Hewlett-Packard, Fort Collins, CO, USA Lines: 19 >Fancy assemblers have been around for a long time. Consider the >VAX assembler (the DEC one, not the UNIX one), which had the pseudo-op >JBR which was translated into a JMP or BRanch instruction depending on >how far away the target ended up, and allowed a high-level specification >of the register save mask for subroutine calls, so you didn't have to >figure it out in binary. Or the MACRO assembler for DEC 20s, which >had all sorts of high-level stuff. It was practically an HLL. None of these transformations violate the cardinal rule of assemblers, namely that of providing a one-to-one translation. That is, pseudo-ops, registers masks, and macros are all merely notational conveniences. If I write a macro and then use it, I know exactly what code will come out. Conversely, if I know I want a specific code sequence to come out, I can write the source accordingly. The MIPS "assembler", if the instruction scheduling or whatever cannot be disabled, fails this test of assembler-ness. Of course, I have nothing against this, and there is probably no real such dictionary definition for "assembler". It is counter-intuitive, though, in a way that pseudo-ops, masks, and macros are not.