#include #include "o.h" INST_T instr[] = { mod_reg, 0, "add", /* ADD mem/reg,reg (byte) [00] */ mod_reg, 1, "add", /* ADD mem/reg,reg (word) [01] */ mod_reg, 2, "add", /* ADD reg,mem/reg (byte) [02] */ mod_reg, 3, "add", /* ADD reg,mem/reg (word) [03] */ two_byte, AL, "add", /* ADD AL,kk [04] */ three_byte, AX, "add", /* ADD AX,jjkk [05] */ one_byte, ES, "push", /* PUSH ES [06] */ one_byte, ES, "pop", /* POP ES [07] */ mod_reg, 0, "or", /* OR mem/reg,reg (byte) [08] */ mod_reg, 1, "or", /* OR mem/reg,reg (word) [09] */ mod_reg, 2, "or", /* OR reg,mem/reg (byte) [0A] */ mod_reg, 3, "or", /* OR reg,mem/reg (word) [0B] */ two_byte, AL, "or", /* OR AL,kk [0C] */ three_byte, AX, "or", /* OR AX,jjkk [0D] */ one_byte, CS, "push", /* PUSH CS [0E] */ extra, 0, "", /* not used [0F] */ mod_reg, 0, "adc", /* ADC mem/reg,reg (byte) [10] */ mod_reg, 1, "adc", /* ADC mem/reg,reg (word) [11] */ mod_reg, 2, "adc", /* ADC reg,mem/reg (byte) [12] */ mod_reg, 3, "adc", /* ADC reg,mem/reg (word) [13] */ two_byte, AL, "adc", /* ADC AL,kk [14] */ three_byte, AX, "adc", /* ADC AX,jjkk [15] */ one_byte, SS, "push", /* PUSH SS [16] */ one_byte, SS, "pop", /* POP SS [17] */ mod_reg, 0, "sbb", /* SBB mem/reg,reg (byte) [18] */ mod_reg, 1, "sbb", /* SBB mem/reg,reg (word) [19] */ mod_reg, 2, "sbb", /* SBB reg,mem/reg (byte) [1A] */ mod_reg, 3, "sbb", /* SBB reg,mem/reg (word) [1B] */ two_byte, AL, "sbb", /* SBB AL,kk [1C] */ three_byte, AX, "sbb", /* SBB AX,jjkk [1D] */ one_byte, DS, "push", /* PUSH DS [1E] */ one_byte, DS, "pop", /* POP DS [1F] */ mod_reg, 0, "and", /* AND mem/reg,reg (byte) [20] */ mod_reg, 1, "and", /* AND mem/reg,reg (word) [21] */ mod_reg, 2, "and", /* AND reg,mem/reg (byte) [22] */ mod_reg, 3, "and", /* AND reg,mem/reg (word) [23] */ two_byte, AL, "and", /* AND AL,kk [24] */ three_byte, AX, "and", /* AND AX,jjkk [25] */ seg_over, 0, "", /* SEGMENT OVERIDE "ES" [26] */ one_byte, NREG, "daa", /* DAA [27] */ mod_reg, 0, "sub", /* SUB mem/reg,reg (byte) [28] */ mod_reg, 1, "sub", /* SUB mem/reg,reg (word) [29] */ mod_reg, 2, "sub", /* SUB reg,mem/reg (byte) [2A] */ mod_reg, 3, "sub", /* SUB reg,mem/reg (word) [2B] */ two_byte, AL, "sub", /* SUB AL,kk [2C] */ three_byte, AX, "sub", /* SUB AX,jjkk [2D] */ seg_over, 0, "", /* SEGMENT OVERIDE "CS" [2E] */ one_byte, NREG, "das", /* DAS [2F] */ mod_reg, 0, "xor", /* XOR mem/reg,reg (byte) [30] */ mod_reg, 1, "xor", /* XOR mem/reg,reg (word) [31] */ mod_reg, 2, "xor", /* XOR reg,mem/reg (byte) [32] */ mod_reg, 3, "xor", /* XOR reg,mem/reg (word) [33] */ two_byte, AL, "xor", /* XOR AL,kk [34] */ three_byte, AX, "xor", /* XOR AX,jjkk [35] */ seg_over, 0, "", /* SEGMENT OVERIDE "SS" [36] */ one_byte, NREG, "aaa", /* AAA [37] */ mod_reg, 0, "cmp", /* CMP mem/reg,reg (byte) [38] */ mod_reg, 1, "cmp", /* CMP mem/reg,reg (word) [39] */ mod_reg, 2, "cmp", /* CMP reg,mem/reg (byte) [3A] */ mod_reg, 3, "cmp", /* CMP reg,mem/reg (word) [3B] */ two_byte, AL, "cmp", /* CMP AL,kk [3C] */ three_byte, AX, "cmp", /* CMP AX,jjkk [3D] */ seg_over, 0, "", /* SEGMENT OVERIDE "DS" [3E] */ one_byte, NREG, "aas", /* AAS [3F] */ one_byte, AX, "inc", /* INC AX [40] */ one_byte, CX, "inc", /* INC CX [41] */ one_byte, DX, "inc", /* INC DX [42] */ one_byte, BX, "inc", /* INC BX [43] */ one_byte, SP, "inc", /* INC SP [44] */ one_byte, BP, "inc", /* INC BP [45] */ one_byte, SI, "inc", /* INC SI [46] */ one_byte, DI, "inc", /* INC DI [47] */ one_byte, AX, "dec", /* DEC AX [48] */ one_byte, CX, "dec", /* DEC CX [49] */ one_byte, DX, "dec", /* DEC DX [4A] */ one_byte, BX, "dec", /* DEC BX [4B] */ one_byte, SP, "dec", /* DEC SP [4C] */ one_byte, BP, "dec", /* DEC BP [4D] */ one_byte, SI, "dec", /* DEC SI [4E] */ one_byte, DI, "dec", /* DEC DI [4F] */ one_byte, AX, "push", /* PUSH AX [50] */ one_byte, CX, "push", /* PUSH CX [51] */ one_byte, DX, "push", /* PUSH DX [52] */ one_byte, BX, "push", /* PUSH BX [53] */ one_byte, SP, "push", /* PUSH SP [54] */ one_byte, BP, "push", /* PUSH BP [55] */ one_byte, SI, "push", /* PUSH SI [56] */ one_byte, DI, "push", /* PUSH DI [57] */ one_byte, AX, "pop", /* POP AX [58] */ one_byte, CX, "pop", /* POP CX [59] */ one_byte, DX, "pop", /* POP DX [5A] */ one_byte, BX, "pop", /* POP BX [5B] */ one_byte, SP, "pop", /* POP SP [5C] */ one_byte, BP, "pop", /* POP BP [5D] */ one_byte, SI, "pop", /* POP SI [5E] */ one_byte, DI, "pop", /* POP DI [5F] */ one_byte, NREG, "pusha", /* PUSHA (PUSHAD on 386) [60] */ one_byte, NREG, "popa", /* POPA (POPAD on 386) [61] */ mod_reg, 17, "bound", /* BOUND [62] */ mod_reg, 1, "arpl", /* ARPL [63] */ seg_over, 0, "", /* SEGMENT OVERIDE "FS" on 386[64] */ seg_over, 0, "", /* SEGMENT OVERIDE "GS" on 386[65] */ opsize_over, 0, "", /* OPERAND SIZE OVERIDE on 386[66] */ adrsize_over, 0, "", /* ADDRESS SIZE OVERIDE on 386[67] */ three_byte, NREG, "push", /* PUSH (immediate word) [68] */ mod_reg, 24, "imul", /* IMUL reg,mem/reg,imm. word [69] */ two_ubyte, 0, "push\t", /* PUSH (immed. signed byte) [6A] */ mod_reg, 25, "imul", /* IMUL reg,mem/reg,imm. byte [6B] */ one_byte, NREG, "insb", /* INS BYTE [6C] */ one_byte, NREG, "insw", /* INS WORD [6D] */ one_byte, NREG, "outsb", /* OUTS BYTE [6E] */ one_byte, NREG, "outsw", /* OUTS WORD [6F] */ disp8, 0, "jo", /* JO