|
|
1.1 ! root 1: /* ! 2: * A debugger. ! 3: * Tables for the Intel 8086. ! 4: */ ! 5: #include <stdio.h> ! 6: #include <sys/const.h> ! 7: #include <l.out.h> ! 8: #include "trace.h" ! 9: #include "i8086.h" ! 10: ! 11: /* ! 12: * Instruction table. ! 13: */ ! 14: INS insrtab[] ={ ! 15: 0x88, 0xFC, "mov%0t\t%1d", ! 16: 0xC6, 0xFE, "mov%0t\t%nf0m,$%ik", ! 17: 0xB0, 0xF0, "mov%3t\t%0r,$%ik", ! 18: 0xA0, 0xFE, "mov%0t\t%x,%:wp", ! 19: 0xA2, 0xFE, "mov%0t\t%:wp,%x", ! 20: 0x8E, 0xFF, "mov\t%n5z3s,%m", ! 21: 0x8C, 0xFF, "mov\t%n5zm,%3s", ! 22: 0xFF, 0xFF, "push\t%nf6m", ! 23: 0x50, 0xF8, "push\t%0r", ! 24: 0x06, 0xE7, "push\t%3s", ! 25: 0x8F, 0xFF, "pop\t%nf0m", ! 26: 0x58, 0xF8, "pop\t%0r", ! 27: 0x07, 0xE7, "pop\t%3s", ! 28: 0x86, 0xFE, "xchg%0t\t%n3r,%m", ! 29: 0x90, 0xF8, "xchg\t%x,%0r", ! 30: 0xE4, 0xFE, "in%0t\t%x,%bl", ! 31: 0xEC, 0xFE, "in%0t\t%x,dx", ! 32: 0xE6, 0xFE, "out%0t\t%bl,%x", ! 33: 0xEE, 0xFE, "out%0t\tdx,%x", ! 34: 0xD7, 0xFF, "xlat", ! 35: 0x8D, 0xFF, "lea\t%n3r,%m", ! 36: 0xC5, 0xFF, "lds\t%n3r,%m", ! 37: 0xC4, 0xFF, "les\t%n3r,%m", ! 38: 0x9F, 0xFF, "lahf", ! 39: 0x9E, 0xFF, "sahf", ! 40: 0x9C, 0xFF, "pushf", ! 41: 0x9D, 0xFF, "popf", ! 42: 0x00, 0xFC, "add%0t\t%1d", ! 43: 0x80, 0xFC, "add%0t\t%1enf0m,$%ik", ! 44: 0x04, 0xFE, "add%0t\t%x,$%ik", ! 45: 0x10, 0xFC, "adc%0t\t%1d", ! 46: 0x80, 0xFC, "adc%0t\t%1enf2m,$%ik", ! 47: 0x14, 0xFE, "adc%0t\t%x,$%ik", ! 48: 0xFE, 0xFE, "inc%0t\t%nf0m", ! 49: 0x40, 0xF8, "inc\t%0r", ! 50: 0x37, 0xFF, "aaa", ! 51: 0x27, 0xFF, "daa", ! 52: 0x28, 0xFC, "sub%0t\t%1d", ! 53: 0x80, 0xFC, "sub%0t\t%1enf5m,$%ik", ! 54: 0x2C, 0xFE, "sub%0t\t%x,$%ik", ! 55: 0x18, 0xFC, "sbb%0t\t%1d", ! 56: 0x80, 0xFC, "sbb%0t\t%1enf3m,$%ik", ! 57: 0x1C, 0xFE, "sbb%0t\t%x,$%ik", ! 58: 0xFE, 0xFE, "dec%0t\t%nf1m", ! 59: 0x48, 0xF8, "dec\t%0r", ! 60: 0xF6, 0xFE, "neg%0t\t%nf3m", ! 61: 0x38, 0xFC, "cmp%0t\t%1d", ! 62: 0x80, 0xFC, "cmp%0t\t%1enf7m,$%ik", ! 63: 0x3C, 0xFE, "cmp%0t\t%x,$%ik", ! 64: 0x3F, 0xFF, "aas", ! 65: 0x2F, 0xFF, "das", ! 66: 0xF6, 0xFE, "mul%0t\t%x,%nf4m", ! 67: 0xF6, 0xFE, "imul%0t\t%x,%nf5m", ! 68: 0xD4, 0xFF, "aam%n%g", ! 69: 0xF6, 0xFE, "div%0t\t%x,%nf6m", ! 70: 0xF6, 0xFE, "idiv%0t\t%x,%nf7m", ! 71: 0xD5, 0xFF, "aad%n%g", ! 72: 0x98, 0xFF, "cbw", ! 73: 0x99, 0xFF, "cwd", ! 74: 0xF6, 0xFE, "not%0t\t%nf2m", ! 75: 0xD0, 0xFC, "shl%0t\t%nf4m,%1v", ! 76: 0xD0, 0xFC, "shr%0t\t%nf5m,%1v", ! 77: 0xD0, 0xFC, "sar%0t\t%nf7m,%1v", ! 78: 0xD0, 0xFC, "rol%0t\t%nf0m,%1v", ! 79: 0xD0, 0xFC, "ror%0t\t%nf1m,%1v", ! 80: 0xD0, 0xFC, "rcl%0t\t%nf2m,%1v", ! 81: 0xD0, 0xFC, "rcr%0t\t%nf3m,%1v", ! 82: 0x20, 0xFC, "and%0t\t%1d", ! 83: 0x80, 0xFE, "and%0t\t%nf4m,$%ik", ! 84: 0x24, 0xFE, "and%0t\t%x,$%ik", ! 85: 0x10, 0xFC, "test%0t\t%1d", ! 86: 0xF6, 0xFE, "test%0t\t%nf0m,$%ik", ! 87: 0xA8, 0xFE, "test%0t\t%x,$%ik", ! 88: 0x08, 0xFC, "or%0t\t%1d", ! 89: 0x80, 0xFE, "or%0t\t%nf1m,$%ik", ! 90: 0x0C, 0xFE, "or%0t\t%x,$%ik", ! 91: 0x30, 0xFC, "xor%0t\t%1d", ! 92: 0x34, 0xFE, "xor%0t\t%nf6m,$%ik", ! 93: 0x34, 0xFE, "xor%0t\t%x,$%ik", ! 94: 0xF2, 0xFF, "rep", ! 95: 0xF3, 0xFF, "repnz", ! 96: 0xA4, 0xFE, "movs%0t", ! 97: 0xA6, 0xFE, "cmps%0t", ! 98: 0xAE, 0xFE, "scas%0t", ! 99: 0xAC, 0xFE, "lods%0t", ! 100: 0xAA, 0xFE, "stos%0t", ! 101: 0xE8, 0xFF, "call\t%woq", ! 102: 0xFF, 0xFF, "icall\t%nf2m", ! 103: 0x9A, 0xFF, "xcall\t%wP", ! 104: 0xFF, 0xFF, "xcall\t%nf3m", ! 105: 0xE9, 0xFF, "jmp\t%wol", ! 106: 0xEB, 0xFF, "jmp\t%bol", ! 107: 0xFF, 0xFF, "ijmp\t%nf4m", ! 108: 0xEA, 0xFF, "xjmp\t%wP", ! 109: 0xFF, 0xFF, "xjmp\t%nf5m", ! 110: 0xC3, 0xFF, "ret", ! 111: 0xC2, 0xFF, "ret\t%wk", ! 112: 0xCB, 0xFF, "xret", ! 113: 0xCA, 0xFF, "xret\t%wk", ! 114: 0x70, 0xF0, "%j\t%bol", ! 115: 0xE2, 0xFF, "loop\t%bol", ! 116: 0xE1, 0xFF, "loope\t%bol", ! 117: 0xE0, 0xFF, "loopne\t%bol", ! 118: 0xE3, 0xFF, "jcxz\t%bol", ! 119: 0xCD, 0xFF, "%uy", ! 120: 0xCC, 0xFF, "int\t3", ! 121: 0xCE, 0xFF, "into", ! 122: 0xCF, 0xFF, "iret", ! 123: 0xF8, 0xFF, "clc", ! 124: 0xF5, 0xFF, "cmc", ! 125: 0xF9, 0xFF, "stc", ! 126: 0xFC, 0xFF, "cld", ! 127: 0xFD, 0xFF, "std", ! 128: 0xFA, 0xFF, "cli", ! 129: 0xFB, 0xFF, "sti", ! 130: 0xF4, 0xFF, "hlt", ! 131: 0x9B, 0xFF, "wait", ! 132: 0xD8, 0xF8, "%F", ! 133: 0xF0, 0xFF, "lock", ! 134: 0x00, 0x00, NULL ! 135: }; ! 136: ! 137: /* ! 138: * 8087 Instruction table. ! 139: * The bits considered are the last 3 bits of the ESC ! 140: * instruction and the next instruction byte. ! 141: */ ! 142: INS fpinstab[] = { ! 143: 0x000, 0x138, "fadd?", ! 144: 0x0C0, 0x1F8, "fadd\tST(i)?", ! 145: 0x020, 0x130, "fsubb?", ! 146: 0x0E0, 0x1F0, "fsub\tST(i)?", ! 147: 0x008, 0x138, "fmul?", ! 148: 0x0C8, 0x1F8, "fmul\tST(i)?", ! 149: 0x030, 0x130, "fdiv?", ! 150: 0x0F0, 0x1F0, "fdiv\tST(i)?", ! 151: 0x1FA, 0x7FF, "fsqrt", ! 152: 0x1FD, 0x7FF, "fscale", ! 153: 0x1F8, 0x7FF, "fprem", ! 154: 0x1FC, 0x7FF, "frndint", ! 155: 0x1F4, 0x7FF, "fxtract", ! 156: 0x1E1, 0x7FF, "fabs", ! 157: 0x1E0, 0x7FF, "fchs", ! 158: 0x1F2, 0x7FF, "fptan", ! 159: 0x1F3, 0x7FF, "fpatan", ! 160: 0x1F0, 0x7FF, "f2xm1", ! 161: 0x1F1, 0x7FF, "fyl2x", ! 162: 0x1F9, 0x7FF, "fyl2p1", ! 163: 0x1EE, 0x7FF, "fldz", ! 164: 0x1E8, 0x7FF, "fld1", ! 165: 0x1EB, 0x7FF, "fldpi", ! 166: 0x1E9, 0x7FF, "fldl2t", ! 167: 0x1EA, 0x7FF, "fldl2e", ! 168: 0x1EC, 0x7FF, "fldlg2", ! 169: 0x1ED, 0x7FF, "fldln2", ! 170: 0x3E3, 0x7FF, "finit", ! 171: 0x3E0, 0x77FF, "feni", ! 172: 0x3E1, 0x7FF, "fdisi", ! 173: 0x128, 0x738, "fldcw?", ! 174: 0x138, 0x738, "fstcw?", ! 175: 0x538, 0x738, "fstsw?", ! 176: 0x3E2, 0x7FF, "fclex", ! 177: 0x130, 0x738, "fstenv?", ! 178: 0x120, 0x738, "fldenv?", ! 179: 0x530, 0x738, "fsave?", ! 180: 0x520, 0x738, "frstor?", ! 181: 0x1F7, 0x7FF, "fincstp", ! 182: 0x1F6, 0x7FF, "fdecstp", ! 183: 0x5C0, 0x7F8, "ffree\tST(i)?", ! 184: 0x1D0, 0x7FF, "fnop", ! 185: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.