; Example program for procedure call without local variables ; ; Peter Christen, 30 March 2004 main: ; Write('a'); load #'a' ; /* Push(#'a') *//* AC='a' */ incsp #1 ; /* SP=SP+1 */ store !0 ; /* Mem[SP]=AC */ call Write ; /* SP=SP+1; ; Mem[SP]=PC; ; PC=Write */ incsp #-1 ; /* Pop(1) */ /* SP=SP-1 */ ; Write('b'); load #'b' ; /* Push(#'b') *//* AC='b' */ incsp #1 ; /* SP=SP+1 */ store !0 ; /* Mem[SP]=AC */ call Write ; /* SP=SP+1; Mem[SP]=PC; ; PC=Write */ incsp #-1 ; /* Pop(1) */ /* SP=SP-1 */ ; Write('\n'); load #'\n' ; /* Push(#'\n') */ /* AC='\n' */ incsp #1 ; /* SP=SP+1 */ store !0 ; /* Mem[SP]=AC */ call Write ; /* SP=SP+1; Mem[SP]=PC; ; PC=Write */ incsp #-1 ; /* Pop(1) */ /* SP=SP-1 */ trap #1 ; /* Halt */ ch = -1 ; void Write(char ch) { Write: ; load !ch ; printf("%c",ch); /* AC=Mem[SP-1] */ trap #3 ; /* write AC to stdout */ ret ; } /* PC=Mem[SP]; SP=SP-1 */ end main