PDP-8 Code Optimization (was Re: HP-35/45 Simulator for PDP-8)
pete at dunnington.plus.com
Wed Sep 14 09:42:54 CDT 2016
On 14/09/2016 13:17, Vincent Slyngstad wrote:
> From: Kyle Owen: Tuesday, September 13, 2016 7:12 PM
>> TAD OVFA /A XOR B
>> AND OVFB
>> CMA IAC
>> TAD OVFA
>> TAD OVFB
> There seems to be an issue with my implementation of XOR.
> Before the CMA IAC there needs to be CLL RAL, to reposition the carries
> before subtracting them. Both XORs are affected.
Yes, the usual way is just what you describe: A + B - (2 * A AND B),
which works by calculating the bitwise carries and subtracting them from
the addition, to make it carryless. The AND tells you where they result
from but you have to shift them to the correct positions before taking
the difference. You were missing the multiply x 2 (which needs the CLL
first). Easily missed.
But unless I've missed something, you don't need a complete XOR, you
just need to check the sign bits.
More information about the cctalk