Path: utzoo!mnetor!uunet!husc6!necntc!ima!johnl From: johnl@ima.UUCP Newsgroups: comp.compilers Subject: Re: Compiler Output Message-ID: <812@ima.ISC.COM> Date: 19 Dec 87 21:36:00 GMT References: <777@ima.ISC.COM> Sender: johnl@ima.ISC.COM Reply-To: uunet!uiucdcs!ccvaxa!aglew Lines: 30 Approved: compilers@ima.UUCP Nf-ID: #R:ima.ISC.COM:777:ccvaxa:35300002:000:1567 Nf-From: ccvaxa.UUCP!aglew Dec 19 15:36:00 1987 ..> Compilers generating assembly or object code An example: PCC compilers usually generate assembly, so there are utilities like "inline" in BSD 4.3 that perform inline expansion of assembly language functions, and permit access via what seems to be a function call to C, to all the special instructions of your machine, without paying the overhead of an assembly language wrapper. Eg. I just finished inlining all the special instructions on my machine, but notably double precision arithmetic, access to special registers, and a few special arithmetic operations like Shift and Count Zeroes - FFS. All of these instructions fell naturally into our calling sequence, so could be directly inlined to look like a function. Of course, it's nicer when the compiler does inlining, but I haven't seen cross-language inlining yet. Providing assembly language intermediate code permits the creation of special purpose optimizations like BSD inline, without having to learn the internal structure of the compiler. And now I'm going to look at writing an improved assembly to assembly lnaguage pipeline optimizer and code reorganizer. But, I don't want to learn the innards of our compiler to do this. Andy "Krazy" Glew. Gould CSD-Urbana. 1101 E. University, Urbana, IL 61801 aglew@mycroft.gould.com ihnp4!uiucdcs!ccvaxa!aglew aglew@gswd-vms.arpa -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU Plausible paths are { ihnp4 | decvax | cbosgd | harvard | yale | bbn}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request