Related articles |
---|
[15 earlier articles] |
Re: Caller/Callee saved Registers bart@cs.uoregon.edu (1994-03-25) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-25) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-25) |
Re: Caller/Callee saved Registers zsh@cs.princeton.edu (1994-03-25) |
Re: Caller/Callee saved Registers law@fast.cs.utah.edu (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers anton@mips.complang.tuwien.ac.at (1994-03-28) |
Re: Caller/Callee saved Registers zsh@cs.princeton.edu (1994-03-27) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-28) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-29) |
Re: Caller/Callee saved Registers bart@cs.uoregon.edu (1994-03-29) |
[8 later articles] |
Newsgroups: | comp.compilers |
From: | hbaker@netcom.com (Henry G. Baker) |
Keywords: | registers, design, architecture |
Organization: | nil |
References: | 94-03-054 94-03-136 |
Date: | Sat, 26 Mar 1994 17:04:23 GMT |
pardo@cs.washington.edu (David Keppel) writes:
>it does tend to reinforce my feeling that it's sometimes hard to
>get multicycle memory operations right, esp. `load multiple', which can
>overwrite the register being loaded...
Boy, do I know this bug. The IBM 360 had this very convenient 'load
multiple' instruction which was used for restoring saved registers when
returning from a subroutine. I can't remember exactly, but I think that
the standard usage did _not_ touch the 'base' register being used to
address the memory where the registers were being loaded from. IBM
machines got this instruction right, so I proceeded to try to use it to
implement a combined CAR+CDR instruction on a Lisp. Of course, most CDR's
are used for accessing the next element of a list, so the previous CDR is
no longer needed, and can be overwritten -- LM car,cdr,4(cdr).
The RCA Spectra 70 machine emulated to the IBM 360 instruction set so that
they could utilize (some would say 'rip off') IBM software. Apparently
most of the code worked. Unfortunately, RCA got the load multiple
instruction wrong, and I spent _days_ proving that for once I had a real,
live hardware bug! (I never did isolate exactly what the RCA instruction
did.)
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.