Created
June 26, 2010 02:13
-
-
Save pcyu16/453695 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| * Standard prelude: | |
| 0: LD 5,0(0) load maxaddress form dmem[0] | |
| 1: ST 0,0(0) clear dmem[0] | |
| * End of standard prelude | |
| * One instruction's place is reserved here | |
| 3: LDA 0,4(7) eax = return addr of main | |
| 4: LDC 2,1(2) pushl: push return addr of main | |
| 5: SUB 3,3,2 pushl | |
| 6: ST 0,0(3) pushl | |
| * One instruction's place is reserved here | |
| 8: HALT 0,0,0 | |
| * function start | |
| 9: LDC 2,1(2) backup ebp: push ebp | |
| 10: SUB 3,3,2 backup ebp | |
| 11: ST 4,0(3) backup ebp | |
| 12: LDC 2,0(2) new base: set new ebp | |
| 13: ADD 4,3,2 new base | |
| * One instruction's place is reserved here | |
| 15: LD 0,2(4) load id value | |
| 16: LDA 1,2(4) get address save to edx (local) | |
| 17: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 18: SUB 3,3,2 pushl | |
| 19: ST 0,0(3) pushl | |
| 20: LD 0,3(4) load id value | |
| 21: LDA 1,3(4) get address save to edx (local) | |
| 22: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 23: LDC 2,1(2) popl | |
| 24: ADD 3,3,2 popl | |
| 25: SUB 0,1,0 relop: boolean expression | |
| 26: JLT 0,2(7) relop: brunch if true | |
| 27: LDC 0,0(0) relop: false case: eax = 0 | |
| 28: LDA 7,1(7) relop: unconditional jump | |
| 29: LDC 0,1(0) relop: true case: eax = 1 | |
| * One instruction's place is reserved here | |
| 31: LD 0,-1(4) load id value | |
| 32: LDA 1,-1(4) get address save to edx (local) | |
| 33: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 34: SUB 3,3,2 pushl | |
| 35: ST 1,0(3) pushl | |
| 36: LD 0,2(4) load id value | |
| 37: LDA 1,2(4) get address save to edx (local) | |
| 38: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 39: LDC 2,1(2) popl | |
| 40: ADD 3,3,2 popl | |
| 41: ST 0,0(1) assign value | |
| 42: LD 0,2(4) load id value | |
| 43: LDA 1,2(4) get address save to edx (local) | |
| 44: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 45: SUB 3,3,2 pushl | |
| 46: ST 1,0(3) pushl | |
| 47: LD 0,3(4) load id value | |
| 48: LDA 1,3(4) get address save to edx (local) | |
| 49: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 50: LDC 2,1(2) popl | |
| 51: ADD 3,3,2 popl | |
| 52: ST 0,0(1) assign value | |
| 53: LD 0,3(4) load id value | |
| 54: LDA 1,3(4) get address save to edx (local) | |
| 55: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 56: SUB 3,3,2 pushl | |
| 57: ST 1,0(3) pushl | |
| 58: LD 0,-1(4) load id value | |
| 59: LDA 1,-1(4) get address save to edx (local) | |
| 60: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 61: LDC 2,1(2) popl | |
| 62: ADD 3,3,2 popl | |
| 63: ST 0,0(1) assign value | |
| 30: JEQ 0,33(7) sele_stmt: jump to the end of sele_stmt | |
| 64: LD 0,3(4) load id value | |
| 65: LDA 1,3(4) get address save to edx (local) | |
| 66: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 67: SUB 3,3,2 pushl | |
| 68: ST 0,0(3) pushl | |
| 69: LDC 0,0(0) load const | |
| 70: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 71: LDC 2,1(2) popl | |
| 72: ADD 3,3,2 popl | |
| 73: SUB 0,1,0 relop: boolean expression | |
| 74: JEQ 0,2(7) relop: brunch if true | |
| 75: LDC 0,0(0) relop: false case: eax = 0 | |
| 76: LDA 7,1(7) relop: unconditional jump | |
| 77: LDC 0,1(0) relop: true case: eax = 1 | |
| * One instruction's place is reserved here | |
| 79: LD 0,2(4) load id value | |
| 80: LDA 1,2(4) get address save to edx (local) | |
| 81: LDA 3,2,3 release places for local variables | |
| 82: LDC 2,0(2) erase local: restore esp | |
| 83: ADD 3,4,2 erase local | |
| 84: LD 4,0(3) restore ebp: pop ebp | |
| 85: LDC 2,1(2) restore ebp | |
| 86: ADD 3,3,2 restore ebp | |
| 87: LDC 2,1(2) ret: backup esp and load return address | |
| 88: ADD 3,3,2 ret | |
| 89: LD 7,-1(3) ret | |
| * One instruction's place is reserved here | |
| 91: LDC 2,-2(2) addc: mem[addr] += cnt | |
| 92: ADD 3,3,2 addc | |
| 93: LD 0,3(4) load id value | |
| 94: LDA 1,3(4) get address save to edx (local) | |
| 95: ST 0,0(3) stroe argument | |
| 96: LD 0,2(4) load id value | |
| 97: LDA 1,2(4) get address save to edx (local) | |
| 98: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 99: SUB 3,3,2 pushl | |
| 100: ST 0,0(3) pushl | |
| 101: LD 0,3(4) load id value | |
| 102: LDA 1,3(4) get address save to edx (local) | |
| 103: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 104: SUB 3,3,2 pushl | |
| 105: ST 0,0(3) pushl | |
| 106: LD 0,2(4) load id value | |
| 107: LDA 1,2(4) get address save to edx (local) | |
| 108: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 109: SUB 3,3,2 pushl | |
| 110: ST 0,0(3) pushl | |
| 111: LD 0,3(4) load id value | |
| 112: LDA 1,3(4) get address save to edx (local) | |
| 113: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 114: LDC 2,1(2) popl | |
| 115: ADD 3,3,2 popl | |
| 116: DIV 0,1,0 mulop | |
| 117: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 118: LDC 2,1(2) popl | |
| 119: ADD 3,3,2 popl | |
| 120: MUL 0,1,0 mulop | |
| 121: LD 1,0(3) popl: reg[addr] = mem[esp++] | |
| 122: LDC 2,1(2) popl | |
| 123: ADD 3,3,2 popl | |
| 124: SUB 0,1,0 addop | |
| 125: ST 0,1(3) store argument | |
| 126: LDA 0,4(7) pushl: push return address | |
| 127: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 128: SUB 3,3,2 pushl | |
| 129: ST 0,0(3) pushl | |
| 130: LDA 7,-122(7) jump to function | |
| 131: LDC 2,2(2) addc: mem[addr] += cnt | |
| 132: ADD 3,3,2 addc | |
| 133: LDA 3,2,3 release places for local variables | |
| 134: LDC 2,0(2) erase local: restore esp | |
| 135: ADD 3,4,2 erase local | |
| 136: LD 4,0(3) restore ebp: pop ebp | |
| 137: LDC 2,1(2) restore ebp | |
| 138: ADD 3,3,2 restore ebp | |
| 139: LDC 2,1(2) ret: backup esp and load return address | |
| 140: ADD 3,3,2 ret | |
| 141: LD 7,-1(3) ret | |
| 78: JEQ 0,12(7) sele_stmt: jump to end of sele_stmt | |
| 90: LDA 7,51(7) sele_stmt: jump to end of sele_stmt | |
| 14: LDA 3,-1,3 reserved places for local variables | |
| 142: LDA 3,1,3 release places for local variables | |
| 143: LDC 2,0(2) erase local: restore esp | |
| 144: ADD 3,4,2 erase local | |
| 145: LD 4,0(3) restore ebp: pop ebp | |
| 146: LDC 2,1(2) restore ebp | |
| 147: ADD 3,3,2 restore ebp | |
| 148: LDC 2,1(2) ret: backup esp and load return address | |
| 149: ADD 3,3,2 ret | |
| 150: LD 7,-1(3) ret | |
| * function end | |
| * function start | |
| 151: LDC 2,1(2) backup ebp: push ebp | |
| 152: SUB 3,3,2 backup ebp | |
| 153: ST 4,0(3) backup ebp | |
| 154: LDC 2,0(2) new base: set new ebp | |
| 155: ADD 4,3,2 new base | |
| * One instruction's place is reserved here | |
| 157: LD 0,-1(4) load id value | |
| 158: LDA 1,-1(4) get address save to edx (local) | |
| 159: IN 0,0,0 read interger value | |
| 160: ST 0,0(1) assign value | |
| 161: LD 0,-2(4) load id value | |
| 162: LDA 1,-2(4) get address save to edx (local) | |
| 163: IN 0,0,0 read interger value | |
| 164: ST 0,0(1) assign value | |
| 165: LDC 2,-2(2) addc: mem[addr] += cnt | |
| 166: ADD 3,3,2 addc | |
| 167: LD 0,-1(4) load id value | |
| 168: LDA 1,-1(4) get address save to edx (local) | |
| 169: ST 0,0(3) stroe argument | |
| 170: LD 0,-2(4) load id value | |
| 171: LDA 1,-2(4) get address save to edx (local) | |
| 172: ST 0,1(3) store argument | |
| 173: LDA 0,4(7) pushl: push return address | |
| 174: LDC 2,1(2) pushl: mem[--esp] = reg[addr] | |
| 175: SUB 3,3,2 pushl | |
| 176: ST 0,0(3) pushl | |
| 177: LDA 7,-169(7) jump to function | |
| 178: LDC 2,2(2) addc: mem[addr] += cnt | |
| 179: ADD 3,3,2 addc | |
| 180: OUT 0,0,0 write value in eax | |
| 156: LDA 3,-2,3 reserved places for local variables | |
| 181: LDA 3,2,3 release places for local variables | |
| 182: LDC 2,0(2) erase local: restore esp | |
| 183: ADD 3,4,2 erase local | |
| 184: LD 4,0(3) restore ebp: pop ebp | |
| 185: LDC 2,1(2) restore ebp | |
| 186: ADD 3,3,2 restore ebp | |
| 187: LDC 2,1(2) ret: backup esp and load return address | |
| 188: ADD 3,3,2 ret | |
| 189: LD 7,-1(3) ret | |
| * function end | |
| 2: LDA 3,0,5 reserved places for global variables | |
| 7: LDA 7,143(7) jump to main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment