Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ARBITRARY-PRECISION SIGNED-INTEGER ADDITION:
- VARIABLES:
- null: air
- char: wool or stained_hardened_clay
- registers: v0 #carry of prev op
- v1 #for t1
- v2 #for t2
- b0 #boolean result
- b1 #base
- pointers: p1 #for t1
- p2 #for t2
- p3 #for t3
- tapes: t1 #input 1
- t2 #input 2
- t3 #output
- sys_reset:
- move p1 tape_start # move p1 to start of tape
- move p2 tape_start # move p2 to start of tape
- move p3 tape_start # move p3 to start of tape
- $v0 = 0 # load 0 into $v0
- $v1 = 0 # load 0 into $v1
- $v2 = 0 # load 0 into $v2
- $b0 = 0 # load 0 into $b0
- sys_write:
- write p3 $v1 # write $v1 on t3 at p3
- p3++ # move p3 to next char
- sys_read:
- $b0 = 0 # load 0 into $b0, 0=failed reading
- $v1 = 0 # load 0 into $v1
- $v2 = 0 # load 0 into $v2
- test p1==char # p1 pointing at a char
- $v1 = read p1 # read p1, store in v1
- $b0 = 1 # $b0 = found some input
- test p2==char # p2 pointing at a char
- $v2 = read p2 # read p2, store in v2
- $b0 = 1 # $b0 = found some input
- wait() # wait for read
- p1++ # move p1 to next char
- p2++ # move p2 to next char
- fun_add:
- sys_read # $v1 <- p1, $v2 <- p2, p1++, p2++, $b=0->failed
- wait() # wait for read
- $v1 += $v0 # add $v1 and $v0, store in $v1
- wait() # wait for tests
- test $b0 == 0 # reached end of t1 and t2
- test $v1 == 0 # no carry left over
- $b0 = 1 # $b0 = no carry left over
- wait() # wait for previous test
- test $b0 == 0 # carry left over
- sys_write # write carry
- wait() # wait for sys_reset
- sys_reset # reset p1,p2,p3,v0,v1,v2,b0
- END
- test $b0 == 1 # not reached end of t1 or t2
- $v0 = 0 # load 0 into $v0
- $v1 += $v2 # add $v1 and $v2, store in $v1
- wait() # wait for add
- $v0 += $v1 # copy v1 into v0
- wait() # wait for add
- $v0 /= $b1 # carry = $v0 / base
- $v1 %= $b1 # remainder of $v1 / base, store in $v1
- wait() # wait for /= and %=
- sys_write # write $v1 on t3 at p3, p3++
- wait() # wait for write
- fun_add # repeat fun_add
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement