sx chip

op code format

arg:24  op:8

instruction set is som-v2 
(no case, mod)

bop: add sub mul div 
     shl shr band bor bxor
     eq lt le gt ge ne 
uop: not 
get.v 
put.v
ld.a
st.a
ldx  {ads idx}
stx  {ads idx val}
lit.n
inc.v
dec.v
jmp.a
jt.a
jf.a
call.a
ret.n
fun.n
sys.n
array

sys.1   print integer
sys.2   print character
sys.13  stop simulator

local variable is numbered n...1 in reverse order of appearance in the function definition

Example 

sum 1..10

sum a b 
  s = 0
  while a <= b
     s = s + a
     a = a + 1
  ret s

main
  print sum 1 10
  
a 3
b 2
s 1
#
:main 
  lit.1
  lit.10
  call.sum
  sys.1
  sys.13
:sum
  fun.0
  lit.0
  put.s
  jmp.in
:loop
  get.s
  get.a
  add
  put.s
  inc.a
:in
  get.a
  get.b
  le
  jt.loop
  ret.3
#
  
 





