Re: Optimizing assembler for SPARC

Mark Leone <mleone+@cs.cmu.edu>
Wed, 3 Aug 1994 18:43:11 GMT

          From comp.compilers

Related articles
Optimizing assembler for SPARC Xavier.Leroy@inria.fr (Xavier Leroy) (1994-08-01)
Re: Optimizing assembler for SPARC mleone+@cs.cmu.edu (Mark Leone) (1994-08-02)
Re: Optimizing assembler for SPARC mleone+@cs.cmu.edu (Mark Leone) (1994-08-03)
| List of all articles for this month |

Newsgroups: comp.compilers
From: Mark Leone <mleone+@cs.cmu.edu>
Keywords: sparc, assembler
Organization: School of Computer Science, Carnegie Mellon
References: 94-08-011 94-08-026
Date: Wed, 3 Aug 1994 18:43:11 GMT
Status: RO

Mark Leone <mleone+@cs.cmu.edu> wrote:
>Beware: the MIPS assembler has similar problems. It assumes that the
>so-called temporary registers ($t0-$t9) are never live across procedure
>calls. [...]
>
>Is there a way to defeat this behavior (other than .set nomove)? Are
>there any "general purpose" MIPS schedulers out there?


Michael Meissner pointed me in the right direction: later versions of
the MIPS assembler (e.g. 2.1) provide a ".livereg" directive that is
documented in Kane and Heinrich's 1992 architecture reference:


.livereg indicates to the assembler which registers are live
before a jump, to avoid unsafe optimizations by the
reorganizer. The directive .livereg takes two arguments,
int_bitmask, and fp_bitmask, which are 32-bit bitmasks with a
bit turned on for each register that is live before a jump.
The most significant bit (!) corresponds to register $0....


--
Mark Leone <mleone@cs.cmu.edu>
School of Computer Science, Carnegie Mellon University
Pittsburgh, PA 15213 USA
--


Post a followup to this message

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