Jumps can be implemented by manipulating the instruction pointer at memory location 0, which normally requires 4 instructions. A conditional jump requires 6 instructions. Other special locations are as follows:
- accumulator
- always contains 0
- character input
- character output
The four lines of code below demonstrate the shortest jump:
rssb acc ; set acc to 0
rssb $+2 ; set acc to loop offset
rssb ip ; subtract acc from ip
rssb $-loop ; the loop offset
The code below implements hello world for the RSSB virtual computer. The sum deserves an explanation. Each character is subtracted from sum until sum passes zero, indicating all character have been printed. The final value of sum is the offset required by the conditional jump!
loop rssb acc ; acc = character from ptr
ptr rssb hello
rssb out ; display character
rssb zero ; acc = -acc
rssb zero ; always skipped
rssb sum ; subtract acc from sum
rssb ip ; skipped if sum is <0
; otherwise jump to 0
one rssb acc ; subtract 1 from ptr
rssb one
rssb ptr
rssb acc ; jump to loop
rssb loopoff
rssb ip
loopoff rssb $-loop
sum rssb -1116
rssb 33 ; '!'
rssb 100 ; 'd'
rssb 108 ; 'l'
rssb 114 ; 'r'
rssb 111 ; 'o'
rssb 87 ; 'W'
rssb 32 ; ' '
rssb 44 ; ','
rssb 111 ; 'o'
rssb 108 ; 'l'
rssb 108 ; 'l'
rssb 101 ; 'e'
hello rssb 72 ; 'H'
If you can improve the code above, or you've seen any other programs inplemented with RSSB, please leave a message below.