Annotation of coherent/d/bin/db/i8086/i8086d.c, revision 1.1.1.1

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: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.