github.com/jflude/taocp@v0.0.0-20240210234939-99f2a91af3c2/mixal/opcodes.go (about) 1 package mixal 2 3 import "github.com/jflude/taocp/mix" 4 5 // The opcodes for the MIX 1009 computer (see Table 1, Section 1.3.1) 6 var opcodes = map[string]struct { 7 c, f int // C-value and default F-value 8 }{ 9 "NOP": {mix.NOP, 5}, 10 "ADD": {mix.ADD, 5}, 11 "FADD": {mix.ADD, 6}, 12 "SUB": {mix.SUB, 5}, 13 "FSUB": {mix.SUB, 6}, 14 "MUL": {mix.MUL, 5}, 15 "FMUL": {mix.MUL, 6}, 16 "DIV": {mix.DIV, 5}, 17 "FDIV": {mix.DIV, 6}, 18 "NUM": {mix.NUM, 0}, 19 "CHAR": {mix.NUM, 1}, 20 "HLT": {mix.NUM, 2}, 21 "AND": {mix.NUM, 3}, 22 "OR": {mix.NUM, 4}, 23 "XOR": {mix.NUM, 5}, 24 "FLOT": {mix.NUM, 6}, 25 "FIX": {mix.NUM, 7}, 26 "INT": {mix.NUM, 9}, 27 "SLA": {mix.SLA, 0}, 28 "SRA": {mix.SLA, 1}, 29 "SLAX": {mix.SLA, 2}, 30 "SRAX": {mix.SLA, 3}, 31 "SLC": {mix.SLA, 4}, 32 "SRC": {mix.SLA, 5}, 33 "SLB": {mix.SLA, 6}, 34 "SRB": {mix.SLA, 7}, 35 "MOVE": {mix.MOVE, 0}, 36 "LDA": {mix.LDA, 5}, 37 "LD1": {mix.LD1, 5}, 38 "LD2": {mix.LD2, 5}, 39 "LD3": {mix.LD3, 5}, 40 "LD4": {mix.LD4, 5}, 41 "LD5": {mix.LD5, 5}, 42 "LD6": {mix.LD6, 5}, 43 "LDX": {mix.LDX, 5}, 44 "LDAN": {mix.LDAN, 5}, 45 "LD1N": {mix.LD1N, 5}, 46 "LD2N": {mix.LD2N, 5}, 47 "LD3N": {mix.LD3N, 5}, 48 "LD4N": {mix.LD4N, 5}, 49 "LD5N": {mix.LD5N, 5}, 50 "LD6N": {mix.LD6N, 5}, 51 "LDXN": {mix.LDXN, 5}, 52 "STA": {mix.STA, 5}, 53 "ST1": {mix.ST1, 5}, 54 "ST2": {mix.ST2, 5}, 55 "ST3": {mix.ST3, 5}, 56 "ST4": {mix.ST4, 5}, 57 "ST5": {mix.ST5, 5}, 58 "ST6": {mix.ST6, 5}, 59 "STX": {mix.STX, 5}, 60 "STJ": {mix.STJ, 2}, 61 "STZ": {mix.STZ, 5}, 62 "JBUS": {mix.JBUS, 0}, 63 "IOC": {mix.IOC, 0}, 64 "IN": {mix.IN, 0}, 65 "OUT": {mix.OUT, 0}, 66 "JRED": {mix.JRED, 0}, 67 "JMP": {mix.JMP, 0}, 68 "JSJ": {mix.JMP, 1}, 69 "JOV": {mix.JMP, 2}, 70 "JNOV": {mix.JMP, 3}, 71 "JL": {mix.JMP, 4}, 72 "JE": {mix.JMP, 5}, 73 "JG": {mix.JMP, 6}, 74 "JGE": {mix.JMP, 7}, 75 "JNE": {mix.JMP, 8}, 76 "JLE": {mix.JMP, 9}, 77 "JAN": {mix.JA, 0}, 78 "JAZ": {mix.JA, 1}, 79 "JAP": {mix.JA, 2}, 80 "JANN": {mix.JA, 3}, 81 "JANZ": {mix.JA, 4}, 82 "JANP": {mix.JA, 5}, 83 "JAE": {mix.JA, 6}, 84 "JAO": {mix.JA, 7}, 85 "J1N": {mix.J1, 0}, 86 "J1Z": {mix.J1, 1}, 87 "J1P": {mix.J1, 2}, 88 "J1NN": {mix.J1, 3}, 89 "J1NZ": {mix.J1, 4}, 90 "J1NP": {mix.J1, 5}, 91 "J2N": {mix.J2, 0}, 92 "J2Z": {mix.J2, 1}, 93 "J2P": {mix.J2, 2}, 94 "J2NN": {mix.J2, 3}, 95 "J2NZ": {mix.J2, 4}, 96 "J2NP": {mix.J2, 5}, 97 "J3N": {mix.J3, 0}, 98 "J3Z": {mix.J3, 1}, 99 "J3P": {mix.J3, 2}, 100 "J3NN": {mix.J3, 3}, 101 "J3NZ": {mix.J3, 4}, 102 "J3NP": {mix.J3, 5}, 103 "J4N": {mix.J4, 0}, 104 "J4Z": {mix.J4, 1}, 105 "J4P": {mix.J4, 2}, 106 "J4NN": {mix.J4, 3}, 107 "J4NZ": {mix.J4, 4}, 108 "J4NP": {mix.J4, 5}, 109 "J5N": {mix.J5, 0}, 110 "J5Z": {mix.J5, 1}, 111 "J5P": {mix.J5, 2}, 112 "J5NN": {mix.J5, 3}, 113 "J5NZ": {mix.J5, 4}, 114 "J5NP": {mix.J5, 5}, 115 "J6N": {mix.J6, 0}, 116 "J6Z": {mix.J6, 1}, 117 "J6P": {mix.J6, 2}, 118 "J6NN": {mix.J6, 3}, 119 "J6NZ": {mix.J6, 4}, 120 "J6NP": {mix.J6, 5}, 121 "JXN": {mix.JX, 0}, 122 "JXZ": {mix.JX, 1}, 123 "JXP": {mix.JX, 2}, 124 "JXNN": {mix.JX, 3}, 125 "JXNZ": {mix.JX, 4}, 126 "JXNP": {mix.JX, 5}, 127 "JXE": {mix.JX, 6}, 128 "JXO": {mix.JX, 7}, 129 "INCA": {mix.INCA, 0}, 130 "DECA": {mix.INCA, 1}, 131 "ENTA": {mix.INCA, 2}, 132 "ENNA": {mix.INCA, 3}, 133 "INC1": {mix.INC1, 0}, 134 "DEC1": {mix.INC1, 1}, 135 "ENT1": {mix.INC1, 2}, 136 "ENN1": {mix.INC1, 3}, 137 "INC2": {mix.INC2, 0}, 138 "DEC2": {mix.INC2, 1}, 139 "ENT2": {mix.INC2, 2}, 140 "ENN2": {mix.INC2, 3}, 141 "INC3": {mix.INC3, 0}, 142 "DEC3": {mix.INC3, 1}, 143 "ENT3": {mix.INC3, 2}, 144 "ENN3": {mix.INC3, 3}, 145 "INC4": {mix.INC4, 0}, 146 "DEC4": {mix.INC4, 1}, 147 "ENT4": {mix.INC4, 2}, 148 "ENN4": {mix.INC4, 3}, 149 "INC5": {mix.INC5, 0}, 150 "DEC5": {mix.INC5, 1}, 151 "ENT5": {mix.INC5, 2}, 152 "ENN5": {mix.INC5, 3}, 153 "INC6": {mix.INC6, 0}, 154 "DEC6": {mix.INC6, 1}, 155 "ENT6": {mix.INC6, 2}, 156 "ENN6": {mix.INC6, 3}, 157 "INCX": {mix.INCX, 0}, 158 "DECX": {mix.INCX, 1}, 159 "ENTX": {mix.INCX, 2}, 160 "ENNX": {mix.INCX, 3}, 161 "CMPA": {mix.CMPA, 5}, 162 "FCMP": {mix.CMPA, 6}, 163 "CMP1": {mix.CMP1, 5}, 164 "CMP2": {mix.CMP2, 5}, 165 "CMP3": {mix.CMP3, 5}, 166 "CMP4": {mix.CMP4, 5}, 167 "CMP5": {mix.CMP5, 5}, 168 "CMP6": {mix.CMP6, 5}, 169 "CMPX": {mix.CMPX, 5}, 170 }