Intermediate representation of program: Data... LABEL( sconst ) ;insert an ASM label INT( iconst ) ;insert int constant FLOAT( fconst ) ;insert float constant STRING( sconst ) ;insert string constant Code... Statements only: ENTER( iconst ) ;enter func with iconst locals LEAVE( iconst ) ;leave func with iconst locals JUMP( sconst ) ;jump to label sconst JUMPT( l,sconst ) ;eval expr-l, if !=0 jump to label sconst JUMPF( r,sconst ) ;eval expr-r, if ==0 jump to label sconst RETURN( l,sconst ) ;eval expr-l into return reg and jump to label sconst STORE( l,r ) ;eval expr-r and store it in expr-l Stmts or expressions: CALL( l,r ) ;eval expr-r, push it and call expr-l ARGS( l,r ) ;eval expr-r, push it, eval expr-l FRAME() ;copy of frame pointer GLOBAL( sconst ) ;address of label sconst LOAD( l ) ;integer load NEG( l ),NOT( l ).. ;integer uniops ADD( l,r ),SUB( l,r ).. ;integer binops CONST( iconst ) ;integer constant CAST( l ) ;cast float expr-l to int FLOAD( l ) ;float load FNEG( l ),FNOT( l ).. ;float uniops FADD( l,r ),FSUB( l,r ).;float binops FCONST( fconst ) ;float constant FCAST( l ) ;cast int expr-l to float