; Example program for procedure call with address parameter ; ; Peter Christen, 1 April 2004 ; 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 ; /* Push(address q) */ incsp #1 ; store !0 ; call Sum ; incsp #-3 ; /* Pop(3) */ trap #1 ; /* Halt */ ; 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-3] */ add !b ; /* AC=AC+Mem[SP-2] */ store *0 ; /* Mem[XR]=AC */ ret ; } /* Sum() */ end main