tsymb: %%t %%ss %%dmp beta := 2; %%dmp alpha := beta * 3; %%dmp writeln(alpha, beta); simple -i -y -o tsymb.s -l tsymb.list tsymb in simple.c grammar: stmtlist -> lambda Symbol table dump: SymRoot is NULL => symbol table is empty Token : Id grammar: identifier->Id After : PushId Semstack is: IdEntry (beta) <+ SemTop StLstEntry grammar: memref -> identifier After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry Token : Assignop Token : Iconst grammar: integer_const-> Iconst After : PushInt Semstack is: IconstEntry <+ SemTop AddrEntry StLstEntry grammar: primary -> integer_const After : IconstReduce Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry grammar: fact -> primary grammar: term -> fact Token : Termsym grammar: expr -> term grammar: assignstmt->memeref Assignop expr After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry grammar: stmt -> assignstmt Termsym grammar: stmtlist -> stmtlist stmt After : MergeStmts Semstack is: StLstEntry <+ SemTop Symbol table dump: beta Token : Id grammar: identifier->Id After : PushId Semstack is: IdEntry (alpha) <+ SemTop StLstEntry grammar: memref -> identifier After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry Token : Assignop Token : Id grammar: identifier->Id After : PushId Semstack is: IdEntry (beta) <+ SemTop AddrEntry StLstEntry grammar: memref -> identifier After : IdToAddr Semstack is: AddrEntry <+ SemTop AddrEntry StLstEntry grammar: primary -> memref After : AddrToPrimary Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry grammar: fact -> primary grammar: term -> fact Token : Mpysym grammar: multop -> Mpysym After : Operator Semstack is: OperEntry <+ SemTop ExprEntry AddrEntry StLstEntry Token : Iconst grammar: integer_const-> Iconst After : PushInt Semstack is: IconstEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry grammar: primary -> integer_const After : IconstReduce Semstack is: ExprEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry grammar: fact -> primary grammar: term -> term multop fact After : DoArithOp Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry Token : Termsym grammar: expr -> term grammar: assignstmt->memeref Assignop expr After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry grammar: stmt -> assignstmt Termsym grammar: stmtlist -> stmtlist stmt After : MergeStmts Semstack is: StLstEntry <+ SemTop Symbol table dump: alpha beta Token : Writeln Token : Lparen Token : Id grammar: identifier->Id After : PushId Semstack is: IdEntry (alpha) <+ SemTop StLstEntry grammar: memref -> identifier After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry grammar: primary -> memref After : AddrToPrimary Semstack is: ExprEntry <+ SemTop StLstEntry grammar: fact -> primary grammar: term -> fact Token : Commasym grammar: expr -> term grammar: actparam -> expr After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry grammar: actparamlist->actparam Token : Id grammar: identifier->Id After : PushId Semstack is: IdEntry (beta) <+ SemTop ParmEntry StLstEntry grammar: memref -> identifier After : IdToAddr Semstack is: AddrEntry <+ SemTop ParmEntry StLstEntry grammar: primary -> memref After : AddrToPrimary Semstack is: ExprEntry <+ SemTop ParmEntry StLstEntry grammar: fact -> primary grammar: term -> fact Token : Rparen grammar: expr -> term grammar: actparam -> expr After : CreateActParam Semstack is: ParmEntry <+ SemTop ParmEntry StLstEntry grammar: actparamlist->actparamlist Commasym actparam After : MergeActParam Semstack is: ParmEntry <+ SemTop StLstEntry grammar: writestmt-> Writeln Lparen actparamlist Rparen After : Call Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym grammar: stmt -> writestmt Termsym grammar: stmtlist -> stmtlist stmt After : MergeStmts Semstack is: StLstEntry <+ SemTop grammar: program -> stmtlist After : Done Semstack is: EMPTY Intermediate Representation - the Abstract Syntax Tree Statements Assign beta gets Immediate Value 2 Assign alpha gets beta multiply Immediate Value 3 Writeln parameters alpha beta From codegen.c - DisplayRegs() marks used registers Register: 0 1 2 3 4 5 6 7 8 9 - - - - - - - - - - Used = x: COMPILATION COMPLETE out simple.c ----------------------------------------- spim -file tsymb.s SPIM Version 6.2 of January 11, 1999 Copyright 1990-1998 by James R. Larus (larus@cs.wisc.edu). All Rights Reserved. See the file README for a full copyright notice. Loaded: /opt/spim/bin/trap.handler 62