Reverse Subtract and Skip if Borrow
The instruction has one operand which points to a memory location. The program counter is stored at location 0 and the accumulator at location 1. Location 2 always contains zero, location 3 is used for input and location 4 for output.
RSSB subtracts the accumulator from the contents of a memory location, storing the result in both. If the accumulator was greater than the memory location, the next instruction will be skipped. Jumps can be implemented by manipulating location 0.
Subtract and Branch if Negative
SBN requires three operands, a, b and c. The contents of memory location a is subtracted from the contents of b and the result is stored in b. If the value originally stored in a was greater than the value in b, SBN will jump to c. A variation on the theme is Subtract and Branch unless Positive.
I'll publish my implementation in Redcode shortly. In the meantime, why not take a look at projects listed below. If you're aware of any other implementations, please leave a comment with the details.
- Luke Valenty built a SBN machine using 7400 series logic gates
- Clive Gifford has written a SUBLEQ self-interpreter
- Oleg Mazonka implemented a SUBLEQ interpreter in C++
- Safalra has designed a variation called MISC
Strictly speaking those are not RISC as are both accessing memory and performing data operations.
ReplyDeleteCheck out http://www.caamp.info -- the website for the book “Computer Architecture: A Minimalist Perspective.” The book focuses on one instruction set computing.
ReplyDeleteThe Esoteric Programming Languages Wiki has a new page about RSSB.
ReplyDelete