; Example program for procedure call with address parameter ; example developed by Peter Strazdins, 1992-8 ; Peter Christen, 1 April 2004 ; int main() { ; int p: block 1 ; p, q: block 1 ; q; main: ; load #59 ; p = 59; store p ; ; Sum(5, p, &q); load #5 ; /* Push(5); */ incsp #1 ; store !0 ; load p ; /* Push(p) */ incsp #1 ; store !0 ; loada q ; /* Pusha(q) */ incsp #1 ; store !0 ; call Sum ; incsp #-3 ; /* Pop(3) */ trap #1 ; return 0; ; } ; void Sum( a = -3 ; int a, b = -2 ; int b, c = -1 ; int *c) { Sum: ; load !c ; *c = a + b; storexr ; /* XR=Mem[SP+c] */ load !a ; /* AC=Mem[SP+a] */ add !b ; /* AC=AC+Mem[SP+b] */ store *0 ; /* Mem[XR]=AC */ ret ; } /* Sum() */ end main