Re: Optimizing assembler for SPARC

Mark Leone <mleone+@cs.cmu.edu>
Tue, 2 Aug 1994 15:04:40 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
Date: Tue, 2 Aug 1994 15:04:40 GMT
Status: RO

Xavier Leroy <Xavier.Leroy@inria.fr> wrote:
> Is there an "optimizing" assembler for the SPARC? I'm looking for
> something which will perform instruction scheduling and delay-slot
> filling on arbitrary assembler programs, in the style of the Mips and
> Alpha assemblers.
>
> (As has been noted in this newsgroup before, the -O option of SunOS
> assembler is not a general-purpose scheduler; it produces wrong code
> from the output of my code generator.)


Beware: the MIPS assembler has similar problems. It assumes that the
so-called temporary registers ($t0-$t9) are never live across procedure
calls. So for example, the following code:


beq $t0, $0, L1
jal bar
addi $t0, $t0, 1
...


L1: li $t0, 42
...


Is scheduled as follows:


beq $t0, $0, L1
li $t0, 42
jal bar
nop
addi $t0, $t0, 1
...


L1: ...


This is an incredible annoyance for interprocedural register allocators
that do not use a fixed caller/callee-save calling convention (e.g.
Steenkiste and Hennessy's).


Is there a way to defeat this behavior (other than .set nomove)? Are
there any "general purpose" MIPS schedulers out there?
--
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.