|
|
1.1 ! root 1: /* ! 2: * Opcode table. ! 3: */ ! 4: #ifdef vax ! 5: #include "INC$LIB:cc2.h" ! 6: #else ! 7: #include "cc2.h" ! 8: #endif ! 9: ! 10: /* ! 11: * Opcode table. ! 12: * Indexed by opcode number, as defined in header file h/i8086/opcode.h. ! 13: * Contains the number of address expressions, ! 14: * the opcode and the basic format (style) of each instruction. ! 15: * This table is parallel to the table in cc3/i8086/icode.c ! 16: * and to the definitions of machine ops in h/i8086/opcode.h; ! 17: * modifications must be made in parallel. ! 18: */ ! 19: OPINFO opinfo[] = { ! 20: /* aaa */ 0, 0, 0x37, OF_INH, ! 21: /* aad */ 0, 0, 0xD5, OF_INH2, ! 22: /* aam */ 0, 0, 0xD4, OF_INH2, ! 23: /* aas */ 0, 0, 0x3F, OF_INH, ! 24: /* adc */ 2, 0, 0x11, OF_DOPS, ! 25: /* adcb */ 2, OP_BYTE, 0x10, OF_DOP, ! 26: /* add */ 2, 0, 0x01, OF_DOPS, ! 27: /* addb */ 2, OP_BYTE, 0x00, OF_DOP, ! 28: /* and */ 2, 0, 0x21, OF_DOP, ! 29: /* andb */ 2, OP_BYTE, 0x20, OF_DOP, ! 30: /* call */ 1, OP_NPTR, 0xE8, OF_CALL, ! 31: /* cbw */ 0, 0, 0x98, OF_INH, ! 32: /* clc */ 0, 0, 0xF8, OF_INH, ! 33: /* cld */ 0, 0, 0xFC, OF_INH, ! 34: /* cli */ 0, 0, 0xFA, OF_INH, ! 35: /* cmc */ 0, 0, 0xF5, OF_INH, ! 36: /* cmp */ 2, 0, 0x39, OF_DOPS, ! 37: /* cmpb */ 2, OP_BYTE, 0x38, OF_DOP, ! 38: /* cmpsw */ 0, 0, 0xA7, OF_INH, ! 39: /* cmpsb */ 0, 0, 0xA6, OF_INH, ! 40: /* cwd */ 0, 0, 0x99, OF_INH, ! 41: /* daa */ 0, 0, 0x27, OF_INH, ! 42: /* das */ 0, 0, 0x2F, OF_INH, ! 43: /* dec */ 1, 0, 0x09, OF_SOP, ! 44: /* decb */ 1, OP_BYTE, 0x08, OF_SOP, ! 45: /* div */ 1, 0, 0x31, OF_MUL, ! 46: /* divb */ 1, OP_BYTE, 0x30, OF_MUL, ! 47: /* hlt */ 0, 0, 0xF4, OF_INH, ! 48: #if AS_FORMAT ! 49: /* icall */ 1, 0, 0x10, OF_ICALL, ! 50: #else ! 51: /* call */ 1, 0, 0x10, OF_ICALL, ! 52: #endif ! 53: /* idiv */ 1, 0, 0x39, OF_MUL, ! 54: /* idivb */ 1, OP_BYTE, 0x38, OF_MUL, ! 55: #if AS_FORMAT ! 56: /* ijmp */ 1, 0, 0x20, OF_ICALL, ! 57: #else ! 58: /* jmp */ 1, 0, 0x20, OF_ICALL, ! 59: #endif ! 60: /* imul */ 1, 0, 0x29, OF_MUL, ! 61: /* imulb */ 1, OP_BYTE, 0x28, OF_MUL, ! 62: /* in */ 1, 0, 0xE5, OF_IN, ! 63: /* inb */ 1, OP_BYTE, 0xE4, OF_IN, ! 64: /* inc */ 1, 0, 0x01, OF_SOP, ! 65: /* incb */ 1, OP_BYTE, 0x00, OF_SOP, ! 66: /* int */ 1, OP_NPTR, 0xCD, OF_INT, ! 67: /* into */ 0, 0, 0xCE, OF_INH, ! 68: /* iret */ 0, 0, 0xCF, OF_INH, ! 69: #if AS_FORMAT ! 70: /* xicall */ 1, OP_DWORD, 0x18, OF_ICALL, ! 71: /* xijmp */ 1, OP_NPTR, 0x28, OF_ICALL, ! 72: #else ! 73: /* call */ 1, OP_DWORD, 0x18, OF_ICALL, ! 74: /* jmp */ 1, OP_NPTR, 0x28, OF_ICALL, ! 75: #endif ! 76: /* ja */ 1, OP_JUMP, 0x77, OF_JMP, ! 77: /* jae */ 1, OP_JUMP, 0x73, OF_JMP, ! 78: /* jb */ 1, OP_JUMP, 0x72, OF_JMP, ! 79: /* jbe */ 1, OP_JUMP, 0x76, OF_JMP, ! 80: /* jcxz */ 1, OP_JUMP, 0xE3, OF_REL, ! 81: /* je */ 1, OP_JUMP, 0x74, OF_JMP, ! 82: /* jg */ 1, OP_JUMP, 0x7F, OF_JMP, ! 83: /* jge */ 1, OP_JUMP, 0x7D, OF_JMP, ! 84: /* jl */ 1, OP_JUMP, 0x7C, OF_JMP, ! 85: /* jle */ 1, OP_JUMP, 0x7E, OF_JMP, ! 86: /* jmp */ 1, OP_JUMP, 0xEB, OF_JMP, ! 87: /* jne */ 1, OP_JUMP, 0x75, OF_JMP, ! 88: /* jno */ 1, OP_JUMP, 0x71, OF_JMP, ! 89: /* jns */ 1, OP_JUMP, 0x79, OF_JMP, ! 90: /* jo */ 1, OP_JUMP, 0x70, OF_JMP, ! 91: /* jpe */ 1, OP_JUMP, 0x7A, OF_JMP, ! 92: /* jpo */ 1, OP_JUMP, 0x7B, OF_JMP, ! 93: /* js */ 1, OP_JUMP, 0x78, OF_JMP, ! 94: /* lahf */ 0, 0, 0x9F, OF_INH, ! 95: /* lds */ 2, OP_DWORD, 0xC5, OF_LEA, ! 96: /* lea */ 2, 0, 0x8D, OF_LEA, ! 97: /* les */ 2, OP_DWORD, 0xC4, OF_LEA, ! 98: /* lock */ 0, 0, 0xF0, OF_INH, ! 99: /* lodsw */ 0, 0, 0xAD, OF_INH, ! 100: /* lodsb */ 0, 0, 0xAC, OF_INH, ! 101: /* loop */ 1, OP_JUMP, 0xE2, OF_REL, ! 102: /* loope */ 1, OP_JUMP, 0xE1, OF_REL, ! 103: /* loopne */ 1, OP_JUMP, 0xE0, OF_REL, ! 104: /* mov */ 2, 0, 0x89, OF_MOV, ! 105: /* movb */ 2, OP_BYTE, 0x88, OF_MOV, ! 106: /* movsw */ 0, 0, 0xA5, OF_INH, ! 107: /* movsb */ 0, 0, 0xA4, OF_INH, ! 108: /* mul */ 1, 0, 0x21, OF_MUL, ! 109: /* mulb */ 1, OP_BYTE, 0x20, OF_MUL, ! 110: /* neg */ 1, 0, 0x19, OF_SOP, ! 111: /* negb */ 1, OP_BYTE, 0x18, OF_SOP, ! 112: /* not */ 1, 0, 0x11, OF_SOP, ! 113: /* notb */ 1, OP_BYTE, 0x10, OF_SOP, ! 114: /* ret */ 1, OP_NPTR, 0xC2, OF_NRET, ! 115: /* ret */ 1, OP_NPTR, 0xCB, OF_NRET, ! 116: /* or */ 2, 0, 0x09, OF_DOP, ! 117: /* orb */ 2, OP_BYTE, 0x08, OF_DOP, ! 118: /* out */ 1, 0, 0xE7, OF_OUT, ! 119: /* outb */ 1, OP_BYTE, 0xE6, OF_OUT, ! 120: /* pop */ 1, 0, 0x8F, OF_POP, ! 121: /* popf */ 0, 0, 0x9D, OF_INH, ! 122: /* push */ 1, 0, 0xFF, OF_PUSH, ! 123: /* pushf */ 0, 0, 0x9C, OF_INH, ! 124: /* rcl */ 2, 0, 0x11, OF_SHR, ! 125: /* rclb */ 2, OP_BYTE, 0x10, OF_SHR, ! 126: /* rcr */ 2, 0, 0x19, OF_SHR, ! 127: /* rcrb */ 2, OP_BYTE, 0x18, OF_SHR, ! 128: /* repe */ 0, 0, 0xF3, OF_INH, ! 129: /* repne */ 0, 0, 0xF2, OF_INH, ! 130: /* ret */ 0, 0, 0xC3, OF_INH, ! 131: /* rol */ 2, 0, 0x01, OF_SHR, ! 132: /* rolb */ 2, OP_BYTE, 0x00, OF_SHR, ! 133: /* ror */ 2, 0, 0x09, OF_SHR, ! 134: /* rorb */ 2, OP_BYTE, 0x08, OF_SHR, ! 135: /* sahf */ 0, 0, 0x9E, OF_INH, ! 136: /* sal */ 2, 0, 0x21, OF_SHR, ! 137: /* salb */ 2, OP_BYTE, 0x20, OF_SHR, ! 138: /* sar */ 2, 0, 0x39, OF_SHR, ! 139: /* sarb */ 2, OP_BYTE, 0x38, OF_SHR, ! 140: /* sbb */ 2, 0, 0x19, OF_DOPS, ! 141: /* sbbb */ 2, OP_BYTE, 0x18, OF_DOP, ! 142: /* scasw */ 0, 0, 0xAF, OF_INH, ! 143: /* scasb */ 0, 0, 0xAE, OF_INH, ! 144: /* shl */ 2, 0, 0x21, OF_SHR, ! 145: /* shlb */ 2, OP_BYTE, 0x20, OF_SHR, ! 146: /* shr */ 2, 0, 0x29, OF_SHR, ! 147: /* shrb */ 2, OP_BYTE, 0x28, OF_SHR, ! 148: /* stc */ 0, 0, 0xF9, OF_INH, ! 149: /* std */ 0, 0, 0xFD, OF_INH, ! 150: /* sti */ 0, 0, 0xFB, OF_INH, ! 151: /* stosw */ 0, 0, 0xAB, OF_INH, ! 152: /* stosb */ 0, 0, 0xAA, OF_INH, ! 153: /* sub */ 2, 0, 0x29, OF_DOPS, ! 154: /* subb */ 2, OP_BYTE, 0x28, OF_DOP, ! 155: /* test */ 2, 0, 0x85, OF_DOP, ! 156: /* testb */ 2, OP_BYTE, 0x84, OF_DOP, ! 157: /* wait */ 0, 0, 0x9B, OF_INH, ! 158: #if AS_FORMAT ! 159: /* xcall */ 1, OP_NPTR, 0x9A, OF_XCALL, ! 160: #else ! 161: /* call */ 1, OP_NPTR, 0x9A, OF_XCALL, ! 162: #endif ! 163: /* xchg */ 2, 0, 0x87, OF_DOP, ! 164: /* xchgb */ 2, OP_BYTE, 0x86, OF_DOP, ! 165: #if AS_FORMAT ! 166: /* xjmp */ 1, OP_NPTR, 0xEA, OF_XCALL, ! 167: #else ! 168: /* jmp */ 1, OP_NPTR, 0xEA, OF_XCALL, ! 169: #endif ! 170: /* xlat */ 0, 0, 0xD7, OF_INH, ! 171: /* xor */ 2, 0, 0x31, OF_DOP, ! 172: /* xorb */ 2, OP_BYTE, 0x30, OF_DOP, ! 173: #if AS_FORMAT ! 174: /* xret */ 0, 0, 0xCB, OF_INH, ! 175: #else ! 176: /* ret */ 0, 0, 0xCB, OF_INH, ! 177: #endif ! 178: ! 179: #if AS_FORMAT ! 180: /* .byte */ 1, OP_DD|OP_NPTR, 0x00, OF_BYTE, ! 181: /* .word */ 1, OP_DD|OP_NPTR, 0x00, OF_WORD, ! 182: /* .word */ 1, OP_DD|OP_NPTR, 0x00, OF_LPTR, ! 183: /* .long */ 1, OP_DD|OP_NPTR, 0x00, OF_GPTR, ! 184: #else ! 185: /* db */ 1, OP_DD|OP_NPTR, 0x00, OF_BYTE, ! 186: /* dw */ 1, OP_DD|OP_NPTR, 0x00, OF_WORD, ! 187: /* dw */ 1, OP_DD|OP_NPTR, 0x00, OF_LPTR, ! 188: /* dd */ 1, OP_DD|OP_NPTR, 0x00, OF_GPTR, ! 189: #endif ! 190: ! 191: /* fadd */ 0, 0, 0xC1, OF_FDE, ! 192: /* faddf */ 1, 0, 0x00, OF_FRM, ! 193: /* faddd */ 1, 0, 0x04, OF_FRM, ! 194: /* faddi */ 1, 0, 0x06, OF_FRM, ! 195: /* faddl */ 1, 0, 0x02, OF_FRM, ! 196: /* fsub */ 0, 0, 0xE1, OF_FDE, ! 197: /* fsubf */ 1, 0, 0x20, OF_FRM, ! 198: /* fsubd */ 1, 0, 0x24, OF_FRM, ! 199: /* fsubi */ 1, 0, 0x26, OF_FRM, ! 200: /* fsubl */ 1, 0, 0x22, OF_FRM, ! 201: /* frsub */ 0, 0, 0xE9, OF_FDE, ! 202: /* frsubf */ 1, 0, 0x28, OF_FRM, ! 203: /* frsubd */ 1, 0, 0x2C, OF_FRM, ! 204: /* frsubi */ 1, 0, 0x2E, OF_FRM, ! 205: /* frsubl */ 1, 0, 0x2A, OF_FRM, ! 206: /* fcompp */ 0, 0, 0xD9, OF_FDE, ! 207: /* fcompf */ 1, 0, 0x18, OF_FRM, ! 208: /* fcompd */ 1, 0, 0x1C, OF_FRM, ! 209: /* fcompi */ 1, 0, 0x1E, OF_FRM, ! 210: /* fcompl */ 1, 0, 0x1A, OF_FRM, ! 211: /* fmul */ 0, 0, 0xC9, OF_FDE, ! 212: /* fmulf */ 1, 0, 0x08, OF_FRM, ! 213: /* fmuld */ 1, 0, 0x0C, OF_FRM, ! 214: /* fmuli */ 1, 0, 0x0E, OF_FRM, ! 215: /* fmull */ 1, 0, 0x0A, OF_FRM, ! 216: /* fdiv */ 0, 0, 0xF1, OF_FDE, ! 217: /* fdivf */ 1, 0, 0x30, OF_FRM, ! 218: /* fdivd */ 1, 0, 0x34, OF_FRM, ! 219: /* fdivi */ 1, 0, 0x36, OF_FRM, ! 220: /* fdivl */ 1, 0, 0x32, OF_FRM, ! 221: /* frdiv */ 0, 0, 0xF9, OF_FDE, ! 222: /* frdivf */ 1, 0, 0x38, OF_FRM, ! 223: /* frdivd */ 1, 0, 0x3C, OF_FRM, ! 224: /* frdivi */ 1, 0, 0x3E, OF_FRM, ! 225: /* frdivl */ 1, 0, 0x3A, OF_FRM, ! 226: /* fchs */ 0, 0, 0xE0, OF_FD9, ! 227: /* ftst */ 0, 0, 0xE4, OF_FD9, ! 228: /* fldz */ 0, 0, 0xEE, OF_FD9, ! 229: /* fld1 */ 0, 0, 0xE8, OF_FD9, ! 230: /* fstsw */ 1, 0, 0x3D, OF_FRM, ! 231: /* fldf */ 1, 0, 0x01, OF_FRM, ! 232: /* fldd */ 1, 0, 0x05, OF_FRM, ! 233: /* fldi */ 1, 0, 0x07, OF_FRM, ! 234: /* fldl */ 1, 0, 0x03, OF_FRM, ! 235: /* fldt */ 1, 0, 0x2B, OF_FRM, ! 236: /* fstf */ 1, 0, 0x11, OF_FRM, ! 237: /* fstd */ 1, 0, 0x15, OF_FRM, ! 238: /* fsti */ 1, 0, 0x17, OF_FRM, ! 239: /* fstl */ 1, 0, 0x13, OF_FRM, ! 240: /* fstpf */ 1, 0, 0x19, OF_FRM, ! 241: /* fstpd */ 1, 0, 0x1D, OF_FRM, ! 242: /* fstpi */ 1, 0, 0x1F, OF_FRM, ! 243: /* fstpl */ 1, 0, 0x1B, OF_FRM, ! 244: /* fstpt */ 1, 0, 0x3B, OF_FRM, ! 245: /* fwait */ 0, 0, 0x9B, OF_FWAIT, ! 246: /* fdrop */ 0, 0, 0xD8, OF_FDD, ! 247: /* fsqrt */ 0, 0, 0xFA, OF_FD9, ! 248: /* fabs */ 0, 0, 0xE1, OF_FD9, ! 249: /* fprem */ 0, 0, 0xF8, OF_FD9, ! 250: /* frnd */ 0, 0, 0xFC, OF_FD9, ! 251: /* ldes */ 0, 0, 0, 0, ! 252: /* imul immediate */ 3, 0, 0x69, OF_MUL3, ! 253: /* enter */ 2, 0, 0xC8, OF_INH, ! 254: /* leave */ 0, 0, 0xC9, OF_INH ! 255: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.