URL
https://opencores.org/ocsvn/c16/c16/trunk
Subversion Repositories c16
[/] [c16/] [trunk/] [loader.asm] - Rev 26
Compare with Previous | Blame | View Log
IN_RX_DATA = 0x00 ;IN_STATUS = 0x01 ;MEMTOP = 0x2000OUT_TX_DATA = 0x00 ;;---------------------------------------;RELOC_SRC = start+Cend_text-stack ;;---------------------------------------;;MOVE #reloc_rr, RR ;MOVE RR, SP ;MOVE #MEMTOP, LL ; destinationreloc: ;MOVE (SP)+, RR ; restore sourceMOVE -(RR), -(LL) ;MOVE RR, -(SP) ; save sourceSHI RR, #start ;JMP RRNZ, reloc ;MOVE #stack, RR ;MOVE RR, SP ;CALL Cmain ;halt: ;HALT ;reloc_rr: ; source.WORD RELOC_SRC ;;---------------------------------------;start: ;.OFFSET MEMTOP ;stack: ;;---------------------------------------;;;; { 0 FunctionDefinition;;; { 1 TypeName;;; { 2 TypeSpecifier (all);;; spec = int (80000);;; } 2 TypeSpecifier (all);;; { 2 List<DeclItem>;;; { 3 DeclItem;;; what = DECL_NAME;;; name = getchr;;; } 3 DeclItem;;; } 2 List<DeclItem>;;; } 1 TypeName;;; { 1 List<DeclItem>;;; { 2 DeclItem;;; what = DECL_NAME;;; name = getchr;;; } 2 DeclItem;;; { 2 DeclItem;;; what = DECL_FUN;;; } 2 DeclItem;;; } 1 List<DeclItem>Cgetchr:;;; { 1 CompoundStatement;;; { 2 List<while Statement>;;; { 3 while StatementL2_loop_1:;;; { 4 ExpressionStatement;;; } 4 ExpressionStatementL2_cont_1:;;; { 4 Expr ! r;;; { 5 Expr l & r;;; { 6 TypeName (internal);;; { 7 TypeSpecifier (all);;; spec = int (80000);;; } 7 TypeSpecifier (all);;; } 6 TypeName (internal)IN (IN_STATUS), RU;-- l & rAND RR, #0x0001;;; } 5 Expr l & r;-- 16 bit ! rLNOT RR;;; } 4 Expr ! r;-- branch_trueJMP RRNZ, L2_loop_1L2_brk_2:;;; } 3 while Statement;;; { 3 ExpressionStatementIN (IN_RX_DATA), RU;;; } 3 ExpressionStatement;;; } 2 List<while Statement>;-- pop 0 bytes;;; } 1 CompoundStatement;-- retRET;;; ------------------------------------;;;; { 1 FunctionDefinition;;; { 2 TypeName;;; { 3 TypeSpecifier (all);;; spec = void (10000);;; } 3 TypeSpecifier (all);;; { 3 List<DeclItem>;;; { 4 DeclItem;;; what = DECL_NAME;;; name = putchr;;; } 4 DeclItem;;; } 3 List<DeclItem>;;; } 2 TypeName;;; { 2 List<DeclItem>;;; { 3 DeclItem;;; what = DECL_NAME;;; name = putchr;;; } 3 DeclItem;;; { 3 DeclItem;;; what = DECL_FUN;;; { 4 List<ParameterDeclaration>;;; { 5 ParameterDeclaration;;; isEllipsis = false;;; { 6 TypeName;;; { 7 TypeSpecifier (all);;; spec = char (20000);;; } 7 TypeSpecifier (all);;; { 7 List<DeclItem>;;; { 8 DeclItem;;; what = DECL_NAME;;; name = c;;; } 8 DeclItem;;; } 7 List<DeclItem>;;; } 6 TypeName;;; } 5 ParameterDeclaration;;; } 4 List<ParameterDeclaration>;;; } 3 DeclItem;;; } 2 List<DeclItem>Cputchr:;;; { 2 CompoundStatement;;; { 3 List<while Statement>;;; { 4 while StatementL3_loop_3:;;; { 5 ExpressionStatement;;; } 5 ExpressionStatementL3_cont_3:;;; { 5 Expr l & r;;; { 6 TypeName (internal);;; { 7 TypeSpecifier (all);;; spec = int (80000);;; } 7 TypeSpecifier (all);;; } 6 TypeName (internal)IN (IN_STATUS), RU;-- l & rAND RR, #0x0002;;; } 5 Expr l & r;-- branch_trueJMP RRNZ, L3_loop_3L3_brk_4:;;; } 4 while Statement;;; { 4 ExpressionStatementMOVE 2(SP), RU;;; } 4 ExpressionStatement;;; { 4 ExpressionStatementOUT R, (OUT_TX_DATA);;; } 4 ExpressionStatement;;; } 3 List<while Statement>;-- pop 0 bytes;;; } 2 CompoundStatement;-- retRET;;; ------------------------------------;;;; { 2 FunctionDefinition;;; { 3 TypeName;;; { 4 TypeSpecifier (all);;; spec = void (10000);;; } 4 TypeSpecifier (all);;; { 4 List<DeclItem>;;; { 5 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 5 DeclItem;;; } 4 List<DeclItem>;;; } 3 TypeName;;; { 3 List<DeclItem>;;; { 4 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 4 DeclItem;;; { 4 DeclItem;;; what = DECL_FUN;;; { 5 List<ParameterDeclaration>;;; { 6 ParameterDeclaration;;; isEllipsis = false;;; { 7 TypeName;;; { 8 TypeSpecifier (all);;; spec = const char (20100);;; } 8 TypeSpecifier (all);;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_POINTER;;; { 10 List<Ptr>;;; { 11 Ptr;;; } 11 Ptr;;; } 10 List<Ptr>;;; } 9 DeclItem;;; { 9 DeclItem;;; what = DECL_NAME;;; name = buffer;;; } 9 DeclItem;;; } 8 List<DeclItem>;;; } 7 TypeName;;; } 6 ParameterDeclaration;;; } 5 List<ParameterDeclaration>;;; } 4 DeclItem;;; } 3 List<DeclItem>Cprint_string:;;; { 3 CompoundStatement;;; { 4 List<while Statement>;;; { 5 while Statement;-- branchJMP L4_cont_5L4_loop_5:;;; { 6 ExpressionStatement;;; { 7 Expr l(r);;; { 8 TypeName;;; { 9 TypeSpecifier (all);;; spec = void (10000);;; } 9 TypeSpecifier (all);;; { 9 List<DeclItem>;;; { 10 DeclItem;;; what = DECL_NAME;;; name = putchr;;; } 10 DeclItem;;; } 9 List<DeclItem>;;; } 8 TypeName;;; { 8 ParameterDeclaration;;; isEllipsis = false;;; { 9 TypeName;;; { 10 TypeSpecifier (all);;; spec = char (20000);;; } 10 TypeSpecifier (all);;; { 10 List<DeclItem>;;; { 11 DeclItem;;; what = DECL_NAME;;; name = c;;; } 11 DeclItem;;; } 10 List<DeclItem>;;; } 9 TypeName;;; } 8 ParameterDeclaration;;; { 8 Expr * r;;; { 9 Expr l - r;;; { 10 Expr ++r;;; { 11 Expression (variable name);;; expr_type = "identifier" (buffer);-- load_rr_var buffer = 2(FP), SP at 0 (16 bit)MOVE 2(SP), RR;;; } 11 Expression (variable name);-- ++ADD RR, #0x0001;-- store_rr_var buffer = 2(FP), SP at 0MOVE RR, 2(SP);;; } 10 Expr ++r;-- l - rSUB RR, #0x0001;;; } 9 Expr l - r;-- contentMOVE (RR), RS;;; } 8 Expr * r;-- push_rr (8 bit)MOVE R, -(SP);-- push 0 bytes;-- callCALL Cputchr;-- pop 1 bytesADD SP, #1;;; } 7 Expr l(r);;; } 6 ExpressionStatementL4_cont_5:;;; { 6 Expr * r;;; { 7 Expression (variable name);;; expr_type = "identifier" (buffer);-- load_rr_var buffer = 2(FP), SP at 0 (16 bit)MOVE 2(SP), RR;;; } 7 Expression (variable name);-- contentMOVE (RR), RS;;; } 6 Expr * r;-- branch_trueJMP RRNZ, L4_loop_5L4_brk_6:;;; } 5 while Statement;;; } 4 List<while Statement>;-- pop 0 bytes;;; } 3 CompoundStatement;-- retRET;;; ------------------------------------;;;; { 3 FunctionDefinition;;; { 4 TypeName;;; { 5 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 5 TypeSpecifier (all);;; { 5 List<DeclItem>;;; { 6 DeclItem;;; what = DECL_NAME;;; name = get_nibble;;; } 6 DeclItem;;; } 5 List<DeclItem>;;; } 4 TypeName;;; { 4 List<DeclItem>;;; { 5 DeclItem;;; what = DECL_NAME;;; name = get_nibble;;; } 5 DeclItem;;; { 5 DeclItem;;; what = DECL_FUN;;; } 5 DeclItem;;; } 4 List<DeclItem>Cget_nibble:;;; { 4 CompoundStatement;;; { 5 InitDeclarator;;; { 6 List<DeclItem>;;; { 7 DeclItem;;; what = DECL_NAME;;; name = c;;; } 7 DeclItem;;; } 6 List<DeclItem>;;; { 6 Initializer (skalar);;; { 7 Expr l(r);;; { 8 TypeName;;; { 9 TypeSpecifier (all);;; spec = int (80000);;; } 9 TypeSpecifier (all);;; { 9 List<DeclItem>;;; { 10 DeclItem;;; what = DECL_NAME;;; name = getchr;;; } 10 DeclItem;;; } 9 List<DeclItem>;;; } 8 TypeName;-- push 2 bytes;-- callCALL Cgetchr;-- pop 0 bytes;;; } 7 Expr l(r);-- push_rr (8 bit)MOVE R, -(SP);;; } 6 Initializer (skalar);;; } 5 InitDeclarator;;; { 5 List<IfElseStatement>;;; { 6 IfElseStatement;;; { 7 Expr l < r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l < rSLO RR, #0x0030;;; } 7 Expr l < r;-- branch_falseJMP RRZ, L5_endif_7;;; { 7 return Statement;;; { 8 NumericExpression (constant 255 = 0xFF);-- load_rr_constantMOVE #0x00FF, RR;;; } 8 NumericExpression (constant 255 = 0xFF);-- retADD SP, #1RET;;; } 7 return StatementL5_endif_7:;;; } 6 IfElseStatement;;; { 6 IfElseStatement;;; { 7 Expr l <= r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l <= rSLS RR, #0x0039;;; } 7 Expr l <= r;-- branch_falseJMP RRZ, L5_endif_8;;; { 7 return Statement;;; { 8 Expr l - r;;; { 9 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 9 Expression (variable name);-- l - rSUB RR, #0x0030;;; } 8 Expr l - r;-- retADD SP, #1RET;;; } 7 return StatementL5_endif_8:;;; } 6 IfElseStatement;;; { 6 IfElseStatement;;; { 7 Expr l < r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l < rSLO RR, #0x0041;;; } 7 Expr l < r;-- branch_falseJMP RRZ, L5_endif_9;;; { 7 return Statement;;; { 8 NumericExpression (constant 255 = 0xFF);-- load_rr_constantMOVE #0x00FF, RR;;; } 8 NumericExpression (constant 255 = 0xFF);-- retADD SP, #1RET;;; } 7 return StatementL5_endif_9:;;; } 6 IfElseStatement;;; { 6 IfElseStatement;;; { 7 Expr l <= r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l <= rSLS RR, #0x0046;;; } 7 Expr l <= r;-- branch_falseJMP RRZ, L5_endif_10;;; { 7 return Statement;;; { 8 Expr l - r;;; { 9 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 9 Expression (variable name);-- l - rSUB RR, #0x0037;;; } 8 Expr l - r;-- retADD SP, #1RET;;; } 7 return StatementL5_endif_10:;;; } 6 IfElseStatement;;; { 6 IfElseStatement;;; { 7 Expr l < r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l < rSLO RR, #0x0061;;; } 7 Expr l < r;-- branch_falseJMP RRZ, L5_endif_11;;; { 7 return Statement;;; { 8 NumericExpression (constant 255 = 0xFF);-- load_rr_constantMOVE #0x00FF, RR;;; } 8 NumericExpression (constant 255 = 0xFF);-- retADD SP, #1RET;;; } 7 return StatementL5_endif_11:;;; } 6 IfElseStatement;;; { 6 IfElseStatement;;; { 7 Expr l <= r;;; { 8 TypeName (internal);;; { 9 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 9 TypeSpecifier (all);;; } 8 TypeName (internal);;; { 8 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 8 Expression (variable name);-- l <= rSLS RR, #0x0066;;; } 7 Expr l <= r;-- branch_falseJMP RRZ, L5_endif_12;;; { 7 return Statement;;; { 8 Expr l - r;;; { 9 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -1(FP), SP at -1 (8 bit)MOVE 0(SP), RU;;; } 9 Expression (variable name);-- l - rSUB RR, #0x0057;;; } 8 Expr l - r;-- retADD SP, #1RET;;; } 7 return StatementL5_endif_12:;;; } 6 IfElseStatement;;; { 6 return Statement;;; { 7 NumericExpression (constant 255 = 0xFF);-- load_rr_constantMOVE #0x00FF, RR;;; } 7 NumericExpression (constant 255 = 0xFF);-- retADD SP, #1RET;;; } 6 return Statement;;; } 5 List<IfElseStatement>;-- pop 1 bytesADD SP, #1;;; } 4 CompoundStatement;-- retRET;;; ------------------------------------;;;; { 4 FunctionDefinition;;; { 5 TypeName;;; { 6 TypeSpecifier (all);;; spec = int (80000);;; } 6 TypeSpecifier (all);;; { 6 List<DeclItem>;;; { 7 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 7 DeclItem;;; } 6 List<DeclItem>;;; } 5 TypeName;;; { 5 List<DeclItem>;;; { 6 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 6 DeclItem;;; { 6 DeclItem;;; what = DECL_FUN;;; } 6 DeclItem;;; } 5 List<DeclItem>Cget_byte:;;; { 5 CompoundStatement;;; { 6 InitDeclarator;;; { 7 List<DeclItem>;;; { 8 DeclItem;;; what = DECL_NAME;;; name = hi;;; } 8 DeclItem;;; } 7 List<DeclItem>;;; { 7 Initializer (skalar);;; { 8 Expr l(r);;; { 9 TypeName;;; { 10 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 10 TypeSpecifier (all);;; { 10 List<DeclItem>;;; { 11 DeclItem;;; what = DECL_NAME;;; name = get_nibble;;; } 11 DeclItem;;; } 10 List<DeclItem>;;; } 9 TypeName;-- push 1 bytes;-- callCALL Cget_nibble;-- pop 0 bytes;;; } 8 Expr l(r);-- push_rr (8 bit)MOVE R, -(SP);;; } 7 Initializer (skalar);;; } 6 InitDeclarator;;; { 6 InitDeclarator;;; { 7 List<DeclItem>;;; { 8 DeclItem;;; what = DECL_NAME;;; name = lo;;; } 8 DeclItem;;; } 7 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 6 InitDeclarator;;; { 6 List<IfElseStatement>;;; { 7 IfElseStatement;;; { 8 Expr l != r;;; { 9 TypeName (internal);;; { 10 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 10 TypeSpecifier (all);;; } 9 TypeName (internal);;; { 9 Expression (variable name);;; expr_type = "identifier" (hi);-- load_rr_var hi = -1(FP), SP at -2 (8 bit)MOVE 1(SP), RU;;; } 9 Expression (variable name);-- l != rSNE RR, #0x00FF;;; } 8 Expr l != r;-- branch_falseJMP RRZ, L6_endif_13;;; { 8 CompoundStatement;;; { 9 List<ExpressionStatement>;;; { 10 ExpressionStatement;;; { 11 Expr l = r;;; { 12 TypeName;;; { 13 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 13 TypeSpecifier (all);;; { 13 List<DeclItem>;;; { 14 DeclItem;;; what = DECL_NAME;;; name = lo;;; } 14 DeclItem;;; } 13 List<DeclItem>;;; } 12 TypeName;;; { 12 Expr l(r);;; { 13 TypeName;;; { 14 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 14 TypeSpecifier (all);;; { 14 List<DeclItem>;;; { 15 DeclItem;;; what = DECL_NAME;;; name = get_nibble;;; } 15 DeclItem;;; } 14 List<DeclItem>;;; } 13 TypeName;-- push 1 bytes;-- callCALL Cget_nibble;-- pop 0 bytes;;; } 12 Expr l(r);-- store_rr_var lo = -2(FP), SP at -2MOVE R, 0(SP);;; } 11 Expr l = r;;; } 10 ExpressionStatement;;; { 10 IfElseStatement;;; { 11 Expr l != r;;; { 12 TypeName (internal);;; { 13 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 13 TypeSpecifier (all);;; } 12 TypeName (internal);;; { 12 Expression (variable name);;; expr_type = "identifier" (lo);-- load_rr_var lo = -2(FP), SP at -2 (8 bit)MOVE 0(SP), RU;;; } 12 Expression (variable name);-- l != rSNE RR, #0x00FF;;; } 11 Expr l != r;-- branch_falseJMP RRZ, L6_endif_14;;; { 11 return Statement;;; { 12 Expr l | r;;; { 13 TypeName (internal);;; { 14 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 14 TypeSpecifier (all);;; } 13 TypeName (internal);;; { 13 Expr l << r;;; { 14 TypeName (internal);;; { 15 TypeSpecifier (all);;; spec = int (80000);;; } 15 TypeSpecifier (all);;; } 14 TypeName (internal);;; { 14 Expression (variable name);;; expr_type = "identifier" (hi);-- load_rr_var hi = -1(FP), SP at -2 (8 bit)MOVE 1(SP), RU;;; } 14 Expression (variable name);-- l << rLSL RR, #0x0004;;; } 13 Expr l << r;-- move_rr_to_llMOVE RR, LL;;; { 13 Expression (variable name);;; expr_type = "identifier" (lo);-- load_rr_var lo = -2(FP), SP at -2 (8 bit)MOVE 0(SP), RU;;; } 13 Expression (variable name);-- l | rOR LL, RR;;; } 12 Expr l | r;-- retADD SP, #2RET;;; } 11 return StatementL6_endif_14:;;; } 10 IfElseStatement;;; } 9 List<ExpressionStatement>;-- pop 0 bytes;;; } 8 CompoundStatementL6_endif_13:;;; } 7 IfElseStatement;;; { 7 ExpressionStatement;;; { 8 Expr l(r);;; { 9 TypeName;;; { 10 TypeSpecifier (all);;; spec = void (10000);;; } 10 TypeSpecifier (all);;; { 10 List<DeclItem>;;; { 11 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 11 DeclItem;;; } 10 List<DeclItem>;;; } 9 TypeName;;; { 9 ParameterDeclaration;;; isEllipsis = false;;; { 10 TypeName;;; { 11 TypeSpecifier (all);;; spec = const char (20100);;; } 11 TypeSpecifier (all);;; { 11 List<DeclItem>;;; { 12 DeclItem;;; what = DECL_POINTER;;; { 13 List<Ptr>;;; { 14 Ptr;;; } 14 Ptr;;; } 13 List<Ptr>;;; } 12 DeclItem;;; { 12 DeclItem;;; what = DECL_NAME;;; name = buffer;;; } 12 DeclItem;;; } 11 List<DeclItem>;;; } 10 TypeName;;; } 9 ParameterDeclaration;;; { 9 StringExpression;-- load_rr_stringMOVE #Cstr_5, RR;;; } 9 StringExpression;-- push_rr (16 bit)MOVE RR, -(SP);-- push 0 bytes;-- callCALL Cprint_string;-- pop 2 bytesADD SP, #2;;; } 8 Expr l(r);;; } 7 ExpressionStatement;;; { 7 ExpressionStatementHALT;;; } 7 ExpressionStatement;;; } 6 List<IfElseStatement>;-- pop 2 bytesADD SP, #2;;; } 5 CompoundStatement;-- retRET;;; ------------------------------------;;;; { 5 FunctionDefinition;;; { 6 TypeName;;; { 7 TypeSpecifier (all);;; spec = int (80000);;; } 7 TypeSpecifier (all);;; { 7 List<DeclItem>;;; { 8 DeclItem;;; what = DECL_NAME;;; name = main;;; } 8 DeclItem;;; } 7 List<DeclItem>;;; } 6 TypeName;;; { 6 List<DeclItem>;;; { 7 DeclItem;;; what = DECL_NAME;;; name = main;;; } 7 DeclItem;;; { 7 DeclItem;;; what = DECL_FUN;;; { 8 List<ParameterDeclaration>;;; { 9 ParameterDeclaration;;; isEllipsis = false;;; { 10 TypeName;;; { 11 TypeSpecifier (all);;; spec = int (80000);;; } 11 TypeSpecifier (all);;; { 11 List<DeclItem>;;; { 12 DeclItem;;; what = DECL_NAME;;; name = argc;;; } 12 DeclItem;;; } 11 List<DeclItem>;;; } 10 TypeName;;; } 9 ParameterDeclaration;;; { 9 ParameterDeclaration;;; isEllipsis = false;;; { 10 TypeName;;; { 11 TypeSpecifier (all);;; spec = char (20000);;; } 11 TypeSpecifier (all);;; { 11 List<DeclItem>;;; { 12 DeclItem;;; what = DECL_POINTER;;; { 13 List<Ptr>;;; { 14 Ptr;;; } 14 Ptr;;; } 13 List<Ptr>;;; } 12 DeclItem;;; { 12 DeclItem;;; what = DECL_NAME;;; name = argv;;; } 12 DeclItem;;; { 12 DeclItem;;; what = DECL_ARRAY;;; } 12 DeclItem;;; } 11 List<DeclItem>;;; } 10 TypeName;;; } 9 ParameterDeclaration;;; } 8 List<ParameterDeclaration>;;; } 7 DeclItem;;; } 6 List<DeclItem>Cmain:;;; { 6 CompoundStatement;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = record_length;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 7 InitDeclarator;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = address;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 2 bytesCLRW -(SP);;; } 7 InitDeclarator;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = record_type;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 7 InitDeclarator;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 7 InitDeclarator;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = i;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 7 InitDeclarator;;; { 7 InitDeclarator;;; { 8 List<DeclItem>;;; { 9 DeclItem;;; what = DECL_NAME;;; name = c;;; } 9 DeclItem;;; } 8 List<DeclItem>;-- push_zero 1 bytesCLRB -(SP);;; } 7 InitDeclarator;;; { 7 List<for Statement>;;; { 8 for Statement;;; { 9 ExpressionStatement;;; } 9 ExpressionStatementL7_loop_15:;;; { 9 CompoundStatement;;; { 10 List<ExpressionStatement>;;; { 11 ExpressionStatement;;; { 12 Expr l(r);;; { 13 TypeName;;; { 14 TypeSpecifier (all);;; spec = void (10000);;; } 14 TypeSpecifier (all);;; { 14 List<DeclItem>;;; { 15 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 15 DeclItem;;; } 14 List<DeclItem>;;; } 13 TypeName;;; { 13 ParameterDeclaration;;; isEllipsis = false;;; { 14 TypeName;;; { 15 TypeSpecifier (all);;; spec = const char (20100);;; } 15 TypeSpecifier (all);;; { 15 List<DeclItem>;;; { 16 DeclItem;;; what = DECL_POINTER;;; { 17 List<Ptr>;;; { 18 Ptr;;; } 18 Ptr;;; } 17 List<Ptr>;;; } 16 DeclItem;;; { 16 DeclItem;;; what = DECL_NAME;;; name = buffer;;; } 16 DeclItem;;; } 15 List<DeclItem>;;; } 14 TypeName;;; } 13 ParameterDeclaration;;; { 13 StringExpression;-- load_rr_stringMOVE #Cstr_7, RR;;; } 13 StringExpression;-- push_rr (16 bit)MOVE RR, -(SP);-- push 0 bytes;-- callCALL Cprint_string;-- pop 2 bytesADD SP, #2;;; } 12 Expr l(r);;; } 11 ExpressionStatement;;; { 11 for Statement;;; { 12 ExpressionStatement;;; } 12 ExpressionStatementL7_loop_17:;;; { 12 CompoundStatement;;; { 13 List<while Statement>;;; { 14 while StatementL7_loop_19:;;; { 15 ExpressionStatement;;; } 15 ExpressionStatementL7_cont_19:;;; { 15 Expr l != r;;; { 16 TypeName (internal);;; { 17 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 17 TypeSpecifier (all);;; } 16 TypeName (internal);;; { 16 Expr l = r;;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = c;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;;; { 17 Expr l(r);;; { 18 TypeName;;; { 19 TypeSpecifier (all);;; spec = int (80000);;; } 19 TypeSpecifier (all);;; { 19 List<DeclItem>;;; { 20 DeclItem;;; what = DECL_NAME;;; name = getchr;;; } 20 DeclItem;;; } 19 List<DeclItem>;;; } 18 TypeName;-- push 2 bytes;-- callCALL Cgetchr;-- pop 0 bytes;;; } 17 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 16 Expr l = r;-- l != rSNE RR, #0x003A;;; } 15 Expr l != r;-- branch_trueJMP RRNZ, L7_loop_19L7_brk_20:;;; } 14 while Statement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 NumericExpression (constant 0 = 0x0);-- load_rr_constantMOVE #0x0000, RR;;; } 16 NumericExpression (constant 0 = 0x0);-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = c;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l(r);;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 16 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l += r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l + r;;; { 17 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 16 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l += r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = record_length;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 16 Expression (variable name);-- store_rr_var record_length = -1(FP), SP at -7MOVE R, 6(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = c;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l(r);;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 16 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l += r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l + r;;; { 17 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 16 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l += r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = address;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l << r;;; { 17 TypeName (internal);;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; } 17 TypeName (internal);;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- l << rLSL RR, #0x0008;;; } 16 Expr l << r;-- store_rr_var address = -3(FP), SP at -7MOVE RR, 4(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = c;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l(r);;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 16 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l += r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l + r;;; { 17 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 16 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l += r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l | r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = address;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l | r;;; { 17 TypeName (internal);;; { 18 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 18 TypeSpecifier (all);;; } 17 TypeName (internal);;; { 17 Expression (variable name);;; expr_type = "identifier" (address);-- load_rr_var address = -3(FP), SP at -7 (16 bit)MOVE 4(SP), RR;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- l | rOR LL, RR;;; } 16 Expr l | r;-- store_rr_var address = -3(FP), SP at -7MOVE RR, 4(SP);;; } 15 Expr l | r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = c;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l(r);;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 16 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l += r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l + r;;; { 17 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 16 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l += r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = record_type;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 16 Expression (variable name);-- store_rr_var record_type = -4(FP), SP at -7MOVE R, 3(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 for Statement;;; { 15 ExpressionStatement;;; { 16 Expr l = r;;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = i;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;;; { 17 NumericExpression (constant 0 = 0x0);-- load_rr_constantMOVE #0x0000, RR;;; } 17 NumericExpression (constant 0 = 0x0);-- store_rr_var i = -6(FP), SP at -7MOVE R, 1(SP);;; } 16 Expr l = r;;; } 15 ExpressionStatement;-- branchJMP L7_tst_21L7_loop_21:;;; { 15 CompoundStatement;;; { 16 List<ExpressionStatement>;;; { 17 ExpressionStatement;;; { 18 Expr l = r;;; { 19 TypeName;;; { 20 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 20 TypeSpecifier (all);;; { 20 List<DeclItem>;;; { 21 DeclItem;;; what = DECL_NAME;;; name = c;;; } 21 DeclItem;;; } 20 List<DeclItem>;;; } 19 TypeName;;; { 19 Expr l(r);;; { 20 TypeName;;; { 21 TypeSpecifier (all);;; spec = int (80000);;; } 21 TypeSpecifier (all);;; { 21 List<DeclItem>;;; { 22 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 22 DeclItem;;; } 21 List<DeclItem>;;; } 20 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 19 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 18 Expr l = r;;; } 17 ExpressionStatement;;; { 17 ExpressionStatement;;; { 18 Expr l = r;;; { 19 TypeName;;; { 20 TypeSpecifier (all);;; spec = char (20000);;; } 20 TypeSpecifier (all);;; } 19 TypeName;;; { 19 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 19 Expression (variable name);-- push_rr (8 bit)MOVE R, -(SP);;; { 19 Expr l[r];;; { 20 Expression (variable name);;; expr_type = "identifier" (i);-- load_rr_var i = -6(FP), SP at -8 (8 bit)MOVE 2(SP), RU;;; } 20 Expression (variable name);-- scale_rr *1;-- push_rr (16 bit)MOVE RR, -(SP);;; { 20 Expression (cast)r;;; { 21 Expression (variable name);;; expr_type = "identifier" (address);-- load_rr_var address = -3(FP), SP at -10 (16 bit)MOVE 7(SP), RR;;; } 21 Expression (variable name);;; } 20 Expression (cast)r;-- pop_ll (16 bit)MOVE (SP)+, LL;-- + (element)ADD LL, RR;;; } 19 Expr l[r];-- move_rr_to_llMOVE RR, LL;-- pop_rr (8 bit)MOVE (SP)+, RS;-- assign (8 bit)MOVE R, (LL);;; } 18 Expr l = r;;; } 17 ExpressionStatement;;; { 17 ExpressionStatement;;; { 18 Expr l += r;;; { 19 TypeName;;; { 20 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 20 TypeSpecifier (all);;; { 20 List<DeclItem>;;; { 21 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 21 DeclItem;;; } 20 List<DeclItem>;;; } 19 TypeName;;; { 19 Expr l + r;;; { 20 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 20 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 20 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 20 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 19 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 18 Expr l += r;;; } 17 ExpressionStatement;;; } 16 List<ExpressionStatement>;-- pop 0 bytes;;; } 15 CompoundStatementL7_cont_21:;;; { 15 Expr l - r;;; { 16 Expr ++r;;; { 17 Expression (variable name);;; expr_type = "identifier" (i);-- load_rr_var i = -6(FP), SP at -7 (8 bit)MOVE 1(SP), RU;;; } 17 Expression (variable name);-- ++ADD RR, #0x0001;-- store_rr_var i = -6(FP), SP at -7MOVE R, 1(SP);;; } 16 Expr ++r;-- l - rSUB RR, #0x0001;;; } 15 Expr l - rL7_tst_21:;;; { 15 Expr l < r;;; { 16 TypeName (internal);;; { 17 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 17 TypeSpecifier (all);;; } 16 TypeName (internal);;; { 16 Expression (variable name);;; expr_type = "identifier" (i);-- load_rr_var i = -6(FP), SP at -7 (8 bit)MOVE 1(SP), RU;;; } 16 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 16 Expression (variable name);;; expr_type = "identifier" (record_length);-- load_rr_var record_length = -1(FP), SP at -7 (8 bit)MOVE 6(SP), RU;;; } 16 Expression (variable name);-- l < rSLO LL, RR;;; } 15 Expr l < r;-- branch_trueJMP RRNZ, L7_loop_21L7_brk_22:;;; } 14 for Statement;;; { 14 ExpressionStatement;;; { 15 Expr l = r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = c;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l(r);;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = int (80000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = get_byte;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;-- push 2 bytes;-- callCALL Cget_byte;-- pop 0 bytes;;; } 16 Expr l(r);-- store_rr_var c = -7(FP), SP at -7MOVE R, 0(SP);;; } 15 Expr l = r;;; } 14 ExpressionStatement;;; { 14 ExpressionStatement;;; { 15 Expr l += r;;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = unsigned char (22000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = check_sum;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 Expr l + r;;; { 17 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 17 Expression (variable name);-- move_rr_to_llMOVE RR, LL;;; { 17 Expression (variable name);;; expr_type = "identifier" (c);-- load_rr_var c = -7(FP), SP at -7 (8 bit)MOVE 0(SP), RU;;; } 17 Expression (variable name);-- scale_rr *1;-- l + rADD LL, RR;;; } 16 Expr l + r;-- store_rr_var check_sum = -5(FP), SP at -7MOVE R, 2(SP);;; } 15 Expr l += r;;; } 14 ExpressionStatement;;; { 14 IfElseStatement;;; { 15 Expression (variable name);;; expr_type = "identifier" (check_sum);-- load_rr_var check_sum = -5(FP), SP at -7 (8 bit)MOVE 2(SP), RU;;; } 15 Expression (variable name);-- branch_falseJMP RRZ, L7_endif_23;;; { 15 break/continue Statement;-- branchJMP L7_brk_18;;; } 15 break/continue StatementL7_endif_23:;;; } 14 IfElseStatement;;; { 14 ExpressionStatement;;; { 15 Expr l(r);;; { 16 TypeName;;; { 17 TypeSpecifier (all);;; spec = void (10000);;; } 17 TypeSpecifier (all);;; { 17 List<DeclItem>;;; { 18 DeclItem;;; what = DECL_NAME;;; name = putchr;;; } 18 DeclItem;;; } 17 List<DeclItem>;;; } 16 TypeName;;; { 16 ParameterDeclaration;;; isEllipsis = false;;; { 17 TypeName;;; { 18 TypeSpecifier (all);;; spec = char (20000);;; } 18 TypeSpecifier (all);;; { 18 List<DeclItem>;;; { 19 DeclItem;;; what = DECL_NAME;;; name = c;;; } 19 DeclItem;;; } 18 List<DeclItem>;;; } 17 TypeName;;; } 16 ParameterDeclaration;;; { 16 NumericExpression (constant 46 = 0x2E);-- load_rr_constantMOVE #0x002E, RR;;; } 16 NumericExpression (constant 46 = 0x2E);-- push_rr (8 bit)MOVE R, -(SP);-- push 0 bytes;-- callCALL Cputchr;-- pop 1 bytesADD SP, #1;;; } 15 Expr l(r);;; } 14 ExpressionStatement;;; { 14 IfElseStatement;;; { 15 Expr l == r;;; { 16 TypeName (internal);;; { 17 TypeSpecifier (all);;; spec = unsigned int (82000);;; } 17 TypeSpecifier (all);;; } 16 TypeName (internal);;; { 16 Expression (variable name);;; expr_type = "identifier" (record_type);-- load_rr_var record_type = -4(FP), SP at -7 (8 bit)MOVE 3(SP), RU;;; } 16 Expression (variable name);-- l == rSEQ RR, #0x0001;;; } 15 Expr l == r;-- branch_falseJMP RRZ, L7_endif_24;;; { 15 CompoundStatement;;; { 16 List<ExpressionStatement>;;; { 17 ExpressionStatement;;; { 18 Expr l(r);;; { 19 TypeName;;; { 20 TypeSpecifier (all);;; spec = void (10000);;; } 20 TypeSpecifier (all);;; { 20 List<DeclItem>;;; { 21 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 21 DeclItem;;; } 20 List<DeclItem>;;; } 19 TypeName;;; { 19 ParameterDeclaration;;; isEllipsis = false;;; { 20 TypeName;;; { 21 TypeSpecifier (all);;; spec = const char (20100);;; } 21 TypeSpecifier (all);;; { 21 List<DeclItem>;;; { 22 DeclItem;;; what = DECL_POINTER;;; { 23 List<Ptr>;;; { 24 Ptr;;; } 24 Ptr;;; } 23 List<Ptr>;;; } 22 DeclItem;;; { 22 DeclItem;;; what = DECL_NAME;;; name = buffer;;; } 22 DeclItem;;; } 21 List<DeclItem>;;; } 20 TypeName;;; } 19 ParameterDeclaration;;; { 19 StringExpression;-- load_rr_stringMOVE #Cstr_8, RR;;; } 19 StringExpression;-- push_rr (16 bit)MOVE RR, -(SP);-- push 0 bytes;-- callCALL Cprint_string;-- pop 2 bytesADD SP, #2;;; } 18 Expr l(r);;; } 17 ExpressionStatement;;; { 17 ExpressionStatement;;; { 18 Expr l(r);;; { 19 TypeName;;; { 20 TypeSpecifier (all);;; spec = void (10000);;; } 20 TypeSpecifier (all);;; } 19 TypeName;-- push 2 bytes;;; { 19 Expression (cast)r;;; { 20 Expression (variable name);;; expr_type = "identifier" (address);-- load_rr_var address = -3(FP), SP at -7 (16 bit)MOVE 4(SP), RR;;; } 20 Expression (variable name);;; } 19 Expression (cast)r;-- call_ptrCALL (RR);-- pop 0 bytes;;; } 18 Expr l(r);;; } 17 ExpressionStatement;;; } 16 List<ExpressionStatement>;-- pop 0 bytes;;; } 15 CompoundStatementL7_endif_24:;;; } 14 IfElseStatement;;; } 13 List<while Statement>;-- pop 0 bytes;;; } 12 CompoundStatementL7_cont_17:;-- branchJMP L7_loop_17L7_brk_18:;;; } 11 for Statement;;; { 11 ExpressionStatement;;; { 12 Expr l(r);;; { 13 TypeName;;; { 14 TypeSpecifier (all);;; spec = void (10000);;; } 14 TypeSpecifier (all);;; { 14 List<DeclItem>;;; { 15 DeclItem;;; what = DECL_NAME;;; name = print_string;;; } 15 DeclItem;;; } 14 List<DeclItem>;;; } 13 TypeName;;; { 13 ParameterDeclaration;;; isEllipsis = false;;; { 14 TypeName;;; { 15 TypeSpecifier (all);;; spec = const char (20100);;; } 15 TypeSpecifier (all);;; { 15 List<DeclItem>;;; { 16 DeclItem;;; what = DECL_POINTER;;; { 17 List<Ptr>;;; { 18 Ptr;;; } 18 Ptr;;; } 17 List<Ptr>;;; } 16 DeclItem;;; { 16 DeclItem;;; what = DECL_NAME;;; name = buffer;;; } 16 DeclItem;;; } 15 List<DeclItem>;;; } 14 TypeName;;; } 13 ParameterDeclaration;;; { 13 StringExpression;-- load_rr_stringMOVE #Cstr_9, RR;;; } 13 StringExpression;-- push_rr (16 bit)MOVE RR, -(SP);-- push 0 bytes;-- callCALL Cprint_string;-- pop 2 bytesADD SP, #2;;; } 12 Expr l(r);;; } 11 ExpressionStatement;;; } 10 List<ExpressionStatement>;-- pop 0 bytes;;; } 9 CompoundStatementL7_cont_15:;-- branchJMP L7_loop_15L7_brk_16:;;; } 8 for Statement;;; } 7 List<for Statement>;-- pop 7 bytesADD SP, #7;;; } 6 CompoundStatement;-- retRET;;; ------------------------------------;Cstr_5: ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0x45 ;.BYTE 0x52 ;.BYTE 0x52 ;.BYTE 0x4F ;.BYTE 0x52 ;.BYTE 0x3A ;.BYTE 0x20 ;.BYTE 0x6E ;.BYTE 0x6F ;.BYTE 0x74 ;.BYTE 0x20 ;.BYTE 0x68 ;.BYTE 0x65 ;.BYTE 0x78 ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0 ;Cstr_7: ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0x4C ;.BYTE 0x4F ;.BYTE 0x41 ;.BYTE 0x44 ;.BYTE 0x20 ;.BYTE 0x3E ;.BYTE 0x20 ;.BYTE 0 ;Cstr_8: ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0x44 ;.BYTE 0x4F ;.BYTE 0x4E ;.BYTE 0x45 ;.BYTE 0x2E ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0 ;Cstr_9: ;.BYTE 0x0D ;.BYTE 0x0A ;.BYTE 0x43 ;.BYTE 0x48 ;.BYTE 0x45 ;.BYTE 0x43 ;.BYTE 0x4B ;.BYTE 0x53 ;.BYTE 0x55 ;.BYTE 0x4D ;.BYTE 0x20 ;.BYTE 0x45 ;.BYTE 0x52 ;.BYTE 0x52 ;.BYTE 0x4F ;.BYTE 0x52 ;.BYTE 0x2E ;.BYTE 0 ;Cend_text: ;
