;; call

;; sum(a,b)
;;   return a + b

;; main
;;   sum(4,5)

;; for sum
;; let a=r1, b=r2, 
;; let retval=r29, link=r30, sp=r31
;; let sum_a, sum_b

.s 
	sum_a 1000
	sum_b 1001
.a 0
.c
	ld r31 #2000
:main	ld r1 #4
	st sum_a r1
	ld r1 #5
	st sum_b r1
	jal r30 sum
	trap print r29	
	trap stop r0

:sum	st @1 r31 r1
	st @2 r31 r2
	add r31 r31 #2	;; push r1,r2
	ld r1 sum_a
	ld r2 sum_b	;; pass a b
	add r29 r1 r2	;; a + b
	ld r2 @0 r31
	ld r1 @-1 r31
	sub r31 r31 #2	;; pop r2,r1
	jr r30
.e
