On Apr 22, 2024, at 4:59 PM, Chuck Guzis via cctalk
<cctalk(a)classiccmp.org> wrote:
On 4/22/24 13:53, Paul Koning via cctalk wrote:
In COMPASS:
MORE SA1 A1+B2 (B2 = 2)
SA2 A2+B2
BX6 X1
LX7 X2
SB3 B3-2
SA6 A6+B2
SA7 A7+B2
PL b3,MORE
My recollection is that putting the stores at the top of the loop and
the loads at the bottom managed to save a few cycles. Of course, you
have to prime the loop...
--Chuck
Might well be, I don't remember. Or moving the SB3 (the loop counter) to be right
after the loads is probably helpful. The full answer depends on understanding the timing,
both of the instructions and of the memory references that are set in motion by them.
I never had my hands on a 6600, only a 6400 which is a single unit machine. So I had to
do some thinking to understand why someone would do a register transfer with L (shift
operation) rather than B (boolean operation) when I first saw that in my code reading.
The answer is that both instructions take 300 ns, but they are in different functional
units on the 6600 so they can start 100 ns apart.
paul