* * Prolog * 0: LDC 4,6(7) ; Calculate Return Address 1: ST 4,2(6) ; Store Return Address on the Stack Frame 2: LDC 5,3(0) ; Set New Status 3: ST 5,0(5) ; Store Current Status 4: LDA 6,11(5) ; Set New Top Pointer 6: LD 4,0(0) ; Load Returned Value 7: OUT 4,0,0 ; Print Returned Value 8: HALT 0,0,0 ; End Program * * main * 9: ST 1,1(5) ; Store Previous R1 10: ST 2,2(5) ; Store Previous R2 11: ST 3,3(5) ; Store Previous R3 12: ST 4,4(5) ; Store Previous R4 13: ST 5,5(5) ; Store Previous R5 14: ST 6,6(5) ; Store Previous R6 15: LD 1,-2(5) ; Load Arg 0 into reg 1 16: OUT 1,0,0 ; Print value in reg 1 17: LD 2,-2(5) ; Load Arg 0 into reg 2 18: ST 2,2(6) ; Store Arg 2 at memLocation 2 19: LDA 4,5(7) ; Calculate Return Address 20: ST 4,3(6) ; Store Return Address on the Stack Frame 21: ST 5,4(6) ; Store Current Status 22: LDA 5,4(6) ; Set New Status 23: LDA 6,9(5) ; Set New Top Pointer 25: LD 3,-2(6) ; Restoring tempVariable t2 into register 3 26: LD 3,1(6) ; Load Returned Value 27: OUT 3,0,0 ; Print value in reg 3 28: LD 4,-2(5) ; Load Arg 0 into reg 4 29: ST 4,2(6) ; Store Arg 4 at memLocation 2 30: ST 4,-1(6) ; Store Previous register 4 contents t3 in mem Location -1 31: LDA 4,6(7) ; Calculate Return Address 32: ST 4,3(6) ; Store Return Address on the Stack Frame 33: LD 4,-1(6) ; Restoring tempVariable t3 into register 4 34: ST 5,4(6) ; Store Current Status 35: LDA 5,4(6) ; Set New Status 36: LDA 6,12(5) ; Set New Top Pointer 38: ST 1,-4(6) ; Store Previous register 1 contents t0 in mem Location -4 39: LD 1,0(6) ; Restoring tempVariable t4 into register 1 40: LD 1,1(6) ; Load Returned Value 41: ST 1,-3(5) ; Store Return Value 42: LD 1,1(5) ; Restoring Previous R1 43: LD 2,2(5) ; Restoring Previous R2 44: LD 3,3(5) ; Restoring Previous R3 45: LD 4,4(5) ; Restoring Previous R4 46: LD 6,6(5) ; Restoring Previous R6 47: LD 5,5(5) ; Restoring Previous R5 48: LDA 6,-4(5) ; Set Top Pointer Back 49: LD 5,0(5) ; Set Status Pointer Back 50: LD 7,3(6) ; Jump Back To Wherever Called From * * isPalindrome * 51: ST 1,1(5) ; Store Previous R1 52: ST 2,2(5) ; Store Previous R2 53: ST 3,3(5) ; Store Previous R3 54: ST 4,4(5) ; Store Previous R4 55: ST 5,5(5) ; Store Previous R5 56: ST 6,6(5) ; Store Previous R6 57: LDC 1,0(0) ; Loading Number 0 into register 1 58: LD 2,-2(5) ; Load Arg 0 into reg 2 59: LD 3,-2(5) ; Load Arg 0 into reg 3 60: ST 3,2(6) ; Store Arg 3 at memLocation 2 61: LDA 4,5(7) ; Calculate Return Address 62: ST 4,3(6) ; Store Return Address on the Stack Frame 63: ST 5,4(6) ; Store Current Status 64: LDA 5,4(6) ; Set New Status 65: LDA 6,9(5) ; Set New Top Pointer 67: LD 4,-2(6) ; Restoring tempVariable t8 into register 4 68: LD 4,1(6) ; Load Returned Value 69: ST 3,-3(6) ; Store Previous register 3 contents t7 in mem Location -3 70: SUB 3,2,4 ; Compute Operation SUB on reg 2 and reg 4 71: ST 1,-5(6) ; Store Previous register 1 contents t5 in mem Location -5 72: SUB 1,1,3 ; Subtracting reg 1 and reg 3 73: JEQ 1,2(7) ; Checking if boolean exprssion is true 74: LDC 1,0(0) ; Load False into reg 1 75: LDA 7,1(7) ; Jump over True 76: LDC 1,1(0) ; Load True into reg 1 77: ST 1,-3(5) ; Store Return Value 78: LD 1,1(5) ; Restoring Previous R1 79: LD 2,2(5) ; Restoring Previous R2 80: LD 3,3(5) ; Restoring Previous R3 81: LD 4,4(5) ; Restoring Previous R4 82: LD 6,6(5) ; Restoring Previous R6 83: LD 5,5(5) ; Restoring Previous R5 84: LDA 6,-4(5) ; Set Top Pointer Back 85: LD 5,0(5) ; Set Status Pointer Back 86: LD 7,3(6) ; Jump Back To Wherever Called From * * reverseL * 87: ST 1,1(5) ; Store Previous R1 88: ST 2,2(5) ; Store Previous R2 89: ST 3,3(5) ; Store Previous R3 90: ST 4,4(5) ; Store Previous R4 91: ST 5,5(5) ; Store Previous R5 92: ST 6,6(5) ; Store Previous R6 93: LD 1,-3(5) ; Load Arg 0 into reg 1 94: LDC 2,0(0) ; Loading Number 0 into register 2 95: SUB 3,1,2 ; Subtracting reg 1 and reg 2 96: JEQ 3,2(7) ; Checking if boolean exprssion is true 97: LDC 3,0(0) ; Load False into reg 3 98: LDA 7,1(7) ; Jump over True 99: LDC 3,1(0) ; Load True into reg 3 100: ST 3,-10(6) ; Store Previous register 3 contents t14 in mem Location -10 104: LD 3,-2(5) ; Load Arg 1 into reg 3 105: ST 3,-13(6) ; Store Previous register 3 contents t11 in mem Location -13 107: LD 3,-3(5) ; Load Arg 0 into reg 3 108: LDC 4,10(0) ; Loading Number 10 into register 4 109: ST 3,-9(6) ; Store Previous register 3 contents t15 in mem Location -9 110: DIV 3,3,4 ; Compute Operation DIV on reg 3 and reg 4 111: ST 1,-12(6) ; Store Previous register 1 contents t12 in mem Location -12 112: LDC 1,10(0) ; Loading Number 10 into register 1 113: ST 3,-7(6) ; Store Previous register 3 contents t17 in mem Location -7 114: LD 3,-2(5) ; Load Arg 1 into reg 3 115: ST 1,-6(6) ; Store Previous register 1 contents t18 in mem Location -6 116: MUL 1,1,3 ; Compute Operation MUL on reg 1 and reg 3 117: ST 3,-5(6) ; Store Previous register 3 contents t19 in mem Location -5 118: LD 3,-3(5) ; Load Arg 0 into reg 3 119: ST 1,-4(6) ; Store Previous register 1 contents t20 in mem Location -4 120: LDC 1,10(0) ; Loading Number 10 into register 1 121: ST 3,2(6) ; Store Arg 3 at memLocation 2 122: ST 1,3(6) ; Store Arg 1 at memLocation 3 123: ST 4,-8(6) ; Store Previous register 4 contents t16 in mem Location -8 124: LDA 4,6(7) ; Calculate Return Address 125: ST 4,4(6) ; Store Return Address on the Stack Frame 126: LD 4,-8(6) ; Restoring tempVariable t16 into register 4 127: ST 5,5(6) ; Store Current Status 128: LDA 5,5(6) ; Set New Status 129: LDA 6,13(5) ; Set New Top Pointer 131: ST 3,-3(6) ; Store Previous register 3 contents t21 in mem Location -3 132: LD 3,-1(6) ; Restoring tempVariable t23 into register 3 133: LD 3,1(6) ; Load Returned Value 134: ST 1,-2(6) ; Store Previous register 1 contents t22 in mem Location -2 135: LD 1,-4(6) ; Restoring tempVariable t20 into register 1 136: ST 3,-1(6) ; Store Previous register 3 contents t23 in mem Location -1 137: ADD 3,1,3 ; Compute Operation ADD on reg 1 and reg 3 138: ST 1,-4(6) ; Store Previous register 1 contents t20 in mem Location -4 139: LD 1,-7(6) ; Restoring tempVariable t17 into register 1 140: ST 1,-3(5) ; Store t17 in arg Location -3 from status pointer 141: ST 3,-2(5) ; Store t24 in arg Location -2 from status pointer 143: ST 3,0(6) ; Store Previous register 3 contents t24 in mem Location 0 144: LD 3,-13(6) ; Loading t11 into reg 3 145: ST 3,-4(5) ; Store Return Value 146: LD 1,1(5) ; Restoring Previous R1 147: LD 2,2(5) ; Restoring Previous R2 148: LD 3,3(5) ; Restoring Previous R3 149: LD 4,4(5) ; Restoring Previous R4 150: LD 6,6(5) ; Restoring Previous R6 151: LD 5,5(5) ; Restoring Previous R5 152: LDA 6,-5(5) ; Set Top Pointer Back 153: LD 5,0(5) ; Set Status Pointer Back 154: LD 7,4(6) ; Jump Back To Wherever Called From * * reverse * 155: ST 1,1(5) ; Store Previous R1 156: ST 2,2(5) ; Store Previous R2 157: ST 3,3(5) ; Store Previous R3 158: ST 4,4(5) ; Store Previous R4 159: ST 5,5(5) ; Store Previous R5 160: ST 6,6(5) ; Store Previous R6 161: LD 1,-2(5) ; Load Arg 0 into reg 1 162: LDC 2,0(0) ; Loading Number 0 into register 2 163: ST 1,2(6) ; Store Arg 1 at memLocation 2 164: ST 2,3(6) ; Store Arg 2 at memLocation 3 165: LDA 4,5(7) ; Calculate Return Address 166: ST 4,4(6) ; Store Return Address on the Stack Frame 167: ST 5,5(6) ; Store Current Status 168: LDA 5,5(6) ; Set New Status 169: LDA 6,20(5) ; Set New Top Pointer 171: LD 3,0(6) ; Restoring tempVariable t27 into register 3 172: LD 3,1(6) ; Load Returned Value 173: ST 3,-3(5) ; Store Return Value 174: LD 1,1(5) ; Restoring Previous R1 175: LD 2,2(5) ; Restoring Previous R2 176: LD 3,3(5) ; Restoring Previous R3 177: LD 4,4(5) ; Restoring Previous R4 178: LD 6,6(5) ; Restoring Previous R6 179: LD 5,5(5) ; Restoring Previous R5 180: LDA 6,-4(5) ; Set Top Pointer Back 181: LD 5,0(5) ; Set Status Pointer Back 182: LD 7,3(6) ; Jump Back To Wherever Called From * * MOD * 183: ST 1,1(5) ; Store Previous R1 184: ST 2,2(5) ; Store Previous R2 185: ST 3,3(5) ; Store Previous R3 186: ST 4,4(5) ; Store Previous R4 187: ST 5,5(5) ; Store Previous R5 188: ST 6,6(5) ; Store Previous R6 189: LD 1,-3(5) ; Load Arg 0 into reg 1 190: LD 2,-2(5) ; Load Arg 1 into reg 2 191: LD 3,-3(5) ; Load Arg 0 into reg 3 192: LD 4,-2(5) ; Load Arg 1 into reg 4 193: ST 1,-6(6) ; Store Previous register 1 contents t28 in mem Location -6 194: DIV 1,3,4 ; Compute Operation DIV on reg 3 and reg 4 195: ST 3,-4(6) ; Store Previous register 3 contents t30 in mem Location -4 196: MUL 3,2,1 ; Compute Operation MUL on reg 2 and reg 1 197: ST 1,-2(6) ; Store Previous register 1 contents t32 in mem Location -2 198: LD 1,-6(6) ; Restoring tempVariable t28 into register 1 199: ST 3,-1(6) ; Store Previous register 3 contents t33 in mem Location -1 200: SUB 3,1,3 ; Compute Operation SUB on reg 1 and reg 3 201: ST 3,-4(5) ; Store Return Value 202: LD 1,1(5) ; Restoring Previous R1 203: LD 2,2(5) ; Restoring Previous R2 204: LD 3,3(5) ; Restoring Previous R3 205: LD 4,4(5) ; Restoring Previous R4 206: LD 6,6(5) ; Restoring Previous R6 207: LD 5,5(5) ; Restoring Previous R5 208: LDA 6,-5(5) ; Set Top Pointer Back 209: LD 5,0(5) ; Set Status Pointer Back 210: LD 7,4(6) ; Jump Back To Wherever Called From * * Branches * 5: LDC 7,9(0) ; Jumping to main 24: LDC 7,155(0) ; Jumping to reverse 37: LDC 7,51(0) ; Jumping to isPalindrome 66: LDC 7,155(0) ; Jumping to reverse 130: LDC 7,183(0) ; Jumping to MOD 170: LDC 7,87(0) ; Jumping to reverseL * * If Conditions * 101: ST 1,-7(6) ; Store Previous register 1 contents t17 in mem Location -7 102: LD 1,-10(6) ; Restoring tempVariable t14 into register 1 103: JEQ 1,107(0) ; Jumping to 107 if reg 1 is false * * GoTo * 106: LDC 7,143(0) ; Go to L2 142: LDC 7,93(0) ; Go to L0