Related articles |
---|
Exchange instructions (WAS: C Compilers which use full 486...) pardo@cs.washington.edu (1991-03-20) |
Newsgroups: | comp.compilers |
From: | pardo@cs.washington.edu (David Keppel) |
Keywords: | C, design, assembler |
Organization: | University of Washington, Computer Science, Seattle |
References: | <wbsAAQr0BwwMR4Tu8E@transarc.com> <1991Mar15.173551.13702@rice.edu> <15501@june.cs.washington.edu> <1991Mar19.234108.25208@rice.edu> |
Date: | 20 Mar 91 18:43:31 GMT |
>>>[Can the `exchange' instruction reasonably be used for anything?]
>pardo@cs.washington.edu writes:
>>[Register allocator replaces load/store
>> mov r0, -46[fp]
>> mov -50[fp], r0
>> with merged slot assignment and exchange
>> xchg r0, -44[fp]
>> ]
preston@ariel.rice.edu (Preston Briggs) writes:
>[Please, no! The problem of merging spill locations is graph
> coloring (discover lifetimes and note when disjoint), then you
> require the register colors to match and the stack locations to match.]
I think merged slot assignments is much easier. You do register
assignment and as a part of that you *decide* which spill locations
are assigned where, and you *already know* which virtual registers
were and weren't disjoint -- indeed, that's why you're creating the
stack slots in the first place.
>[Also, you can't separately schedule the load and the store.]
Quite true.
>[Frankly, I think that `exchange' is too CISCy.]
Agreed. I imagine that making exchange restartable is a royal pain
except for register<->register swaps.
;-D on ( Register search and rescue ) Pardo
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.