diff --git a/Makefile b/Makefile index 9e025ef4..616e32bc 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,9 @@ BROWSER=chromium NASM_TEST_DIR=./tests/nasm COVERAGE_DIR=./tests/coverage +GEN_INSTRUCTION_TABLE_CMDS=./gen/generate_interpreter.js; ./gen/generate_jit.js; +GEN_SCRIPTS := $(wildcard gen/*.js) + # Enable manually and recompile v86-debug.wasm for coverage-enabled tests ifeq ($(ENABLE_COV), 1) CC_COVERAGE_FLAGS=--coverage -fprofile-instr-generate @@ -152,8 +155,9 @@ build/libv86-debug.js: $(CLOSURE) src/*.js lib/*.js src/browser/*.js --js $(BROWSER_FILES)\ --js $(LIB_FILES) -build/v86.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/codegen/*.h src/native/profiler/* src/native/call-indirect.ll +build/v86.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/codegen/*.h src/native/profiler/* src/native/call-indirect.ll $(GEN_SCRIPTS) mkdir -p build + $(GEN_INSTRUCTION_TABLE_CMDS) -ls -lh build/v86.wasm emcc src/native/*.c src/native/profiler/profiler.c src/native/codegen/codegen.c src/native/call-indirect.ll \ $(CC_FLAGS) \ @@ -165,8 +169,9 @@ build/v86.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/ -o build/v86.wasm ls -lh build/v86.wasm -build/v86-debug.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/codegen/*.h src/native/profiler/* src/native/*.ll +build/v86-debug.wasm: src/native/*.c src/native/*.h src/native/codegen/*.c src/native/codegen/*.h src/native/profiler/* src/native/*.ll $(GEN_SCRIPTS) mkdir -p build/coverage + $(GEN_INSTRUCTION_TABLE_CMDS) -ls -lh build/v86-debug.wasm emcc src/native/*.c src/native/profiler/profiler.c src/native/codegen/codegen.c src/native/*.ll \ $(CC_FLAGS) \ diff --git a/src/native/instructions.c b/src/native/instructions.c index 5366519d..9d39cfa3 100644 --- a/src/native/instructions.c +++ b/src/native/instructions.c @@ -1467,10164 +1467,13 @@ DEFINE_MODRM_INSTR1_READ32(instr32_FF_6, push32(___)) void run_instruction(int32_t opcode) { - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - case 0x00|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_00_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_00_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_01_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_01_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x01|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_01_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_01_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x02: - case 0x02|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_02_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_02_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_03_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_03_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_03_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_03_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x04: - case 0x04|0x100: - { - instr_04(read_imm8()); - } - break; - case 0x05: - { - instr16_05(read_imm16()); - } - break; - case 0x05|0x100: - { - instr32_05(read_imm32s()); - } - break; - case 0x06: - { - instr16_06(); - } - break; - case 0x06|0x100: - { - instr32_06(); - } - break; - case 0x07: - { - instr16_07(); - } - break; - case 0x07|0x100: - { - instr32_07(); - } - break; - case 0x08: - case 0x08|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_08_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_08_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x09: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_09_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_09_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x09|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_09_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_09_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x0A: - case 0x0A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x0B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x0B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x0C: - case 0x0C|0x100: - { - instr_0C(read_imm8()); - } - break; - case 0x0D: - { - instr16_0D(read_imm16()); - } - break; - case 0x0D|0x100: - { - instr32_0D(read_imm32s()); - } - break; - case 0x0E: - { - instr16_0E(); - } - break; - case 0x0E|0x100: - { - instr32_0E(); - } - break; - case 0x0F: - { - instr16_0F(); - } - break; - case 0x0F|0x100: - { - instr32_0F(); - } - break; - case 0x10: - case 0x10|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x11|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x12: - case 0x12|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x13|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x14: - case 0x14|0x100: - { - instr_14(read_imm8()); - } - break; - case 0x15: - { - instr16_15(read_imm16()); - } - break; - case 0x15|0x100: - { - instr32_15(read_imm32s()); - } - break; - case 0x16: - { - instr16_16(); - } - break; - case 0x16|0x100: - { - instr32_16(); - } - break; - case 0x17: - { - instr16_17(); - } - break; - case 0x17|0x100: - { - instr32_17(); - } - break; - case 0x18: - case 0x18|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_18_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_18_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_19_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_19_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_19_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_19_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x1A: - case 0x1A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_1A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_1A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x1B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_1B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_1B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x1B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_1B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_1B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x1C: - case 0x1C|0x100: - { - instr_1C(read_imm8()); - } - break; - case 0x1D: - { - instr16_1D(read_imm16()); - } - break; - case 0x1D|0x100: - { - instr32_1D(read_imm32s()); - } - break; - case 0x1E: - { - instr16_1E(); - } - break; - case 0x1E|0x100: - { - instr32_1E(); - } - break; - case 0x1F: - { - instr16_1F(); - } - break; - case 0x1F|0x100: - { - instr32_1F(); - } - break; - case 0x20: - case 0x20|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_20_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_20_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_21_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_21_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x21|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_21_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_21_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x22: - case 0x22|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_22_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_22_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_23_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_23_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x23|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_23_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_23_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x24: - case 0x24|0x100: - { - instr_24(read_imm8()); - } - break; - case 0x25: - { - instr16_25(read_imm16()); - } - break; - case 0x25|0x100: - { - instr32_25(read_imm32s()); - } - break; - case 0x26: - case 0x26|0x100: - { - instr_26(); - } - break; - case 0x27: - case 0x27|0x100: - { - instr_27(); - } - break; - case 0x28: - case 0x28|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_28_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_28_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x29|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x2A: - case 0x2A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_2A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_2A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x2B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x2C: - case 0x2C|0x100: - { - instr_2C(read_imm8()); - } - break; - case 0x2D: - { - instr16_2D(read_imm16()); - } - break; - case 0x2D|0x100: - { - instr32_2D(read_imm32s()); - } - break; - case 0x2E: - case 0x2E|0x100: - { - instr_2E(); - } - break; - case 0x2F: - case 0x2F|0x100: - { - instr_2F(); - } - break; - case 0x30: - case 0x30|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_30_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_30_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x31: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_31_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_31_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x31|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_31_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_31_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x32: - case 0x32|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_32_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_32_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x33: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_33_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_33_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x33|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_33_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_33_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x34: - case 0x34|0x100: - { - instr_34(read_imm8()); - } - break; - case 0x35: - { - instr16_35(read_imm16()); - } - break; - case 0x35|0x100: - { - instr32_35(read_imm32s()); - } - break; - case 0x36: - case 0x36|0x100: - { - instr_36(); - } - break; - case 0x37: - case 0x37|0x100: - { - instr_37(); - } - break; - case 0x38: - case 0x38|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_38_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_38_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x39: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_39_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_39_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x39|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_39_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_39_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x3A: - case 0x3A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_3A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_3A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x3B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_3B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_3B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x3B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_3B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_3B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x3C: - case 0x3C|0x100: - { - instr_3C(read_imm8()); - } - break; - case 0x3D: - { - instr16_3D(read_imm16()); - } - break; - case 0x3D|0x100: - { - instr32_3D(read_imm32s()); - } - break; - case 0x3E: - case 0x3E|0x100: - { - instr_3E(); - } - break; - case 0x3F: - case 0x3F|0x100: - { - instr_3F(); - } - break; - case 0x40: - { - instr16_40(); - } - break; - case 0x40|0x100: - { - instr32_40(); - } - break; - case 0x41: - { - instr16_41(); - } - break; - case 0x41|0x100: - { - instr32_41(); - } - break; - case 0x42: - { - instr16_42(); - } - break; - case 0x42|0x100: - { - instr32_42(); - } - break; - case 0x43: - { - instr16_43(); - } - break; - case 0x43|0x100: - { - instr32_43(); - } - break; - case 0x44: - { - instr16_44(); - } - break; - case 0x44|0x100: - { - instr32_44(); - } - break; - case 0x45: - { - instr16_45(); - } - break; - case 0x45|0x100: - { - instr32_45(); - } - break; - case 0x46: - { - instr16_46(); - } - break; - case 0x46|0x100: - { - instr32_46(); - } - break; - case 0x47: - { - instr16_47(); - } - break; - case 0x47|0x100: - { - instr32_47(); - } - break; - case 0x48: - { - instr16_48(); - } - break; - case 0x48|0x100: - { - instr32_48(); - } - break; - case 0x49: - { - instr16_49(); - } - break; - case 0x49|0x100: - { - instr32_49(); - } - break; - case 0x4A: - { - instr16_4A(); - } - break; - case 0x4A|0x100: - { - instr32_4A(); - } - break; - case 0x4B: - { - instr16_4B(); - } - break; - case 0x4B|0x100: - { - instr32_4B(); - } - break; - case 0x4C: - { - instr16_4C(); - } - break; - case 0x4C|0x100: - { - instr32_4C(); - } - break; - case 0x4D: - { - instr16_4D(); - } - break; - case 0x4D|0x100: - { - instr32_4D(); - } - break; - case 0x4E: - { - instr16_4E(); - } - break; - case 0x4E|0x100: - { - instr32_4E(); - } - break; - case 0x4F: - { - instr16_4F(); - } - break; - case 0x4F|0x100: - { - instr32_4F(); - } - break; - case 0x50: - { - instr16_50(); - } - break; - case 0x50|0x100: - { - instr32_50(); - } - break; - case 0x51: - { - instr16_51(); - } - break; - case 0x51|0x100: - { - instr32_51(); - } - break; - case 0x52: - { - instr16_52(); - } - break; - case 0x52|0x100: - { - instr32_52(); - } - break; - case 0x53: - { - instr16_53(); - } - break; - case 0x53|0x100: - { - instr32_53(); - } - break; - case 0x54: - { - instr16_54(); - } - break; - case 0x54|0x100: - { - instr32_54(); - } - break; - case 0x55: - { - instr16_55(); - } - break; - case 0x55|0x100: - { - instr32_55(); - } - break; - case 0x56: - { - instr16_56(); - } - break; - case 0x56|0x100: - { - instr32_56(); - } - break; - case 0x57: - { - instr16_57(); - } - break; - case 0x57|0x100: - { - instr32_57(); - } - break; - case 0x58: - { - instr16_58(); - } - break; - case 0x58|0x100: - { - instr32_58(); - } - break; - case 0x59: - { - instr16_59(); - } - break; - case 0x59|0x100: - { - instr32_59(); - } - break; - case 0x5A: - { - instr16_5A(); - } - break; - case 0x5A|0x100: - { - instr32_5A(); - } - break; - case 0x5B: - { - instr16_5B(); - } - break; - case 0x5B|0x100: - { - instr32_5B(); - } - break; - case 0x5C: - { - instr16_5C(); - } - break; - case 0x5C|0x100: - { - instr32_5C(); - } - break; - case 0x5D: - { - instr16_5D(); - } - break; - case 0x5D|0x100: - { - instr32_5D(); - } - break; - case 0x5E: - { - instr16_5E(); - } - break; - case 0x5E|0x100: - { - instr32_5E(); - } - break; - case 0x5F: - { - instr16_5F(); - } - break; - case 0x5F|0x100: - { - instr32_5F(); - } - break; - case 0x60: - { - instr16_60(); - } - break; - case 0x60|0x100: - { - instr32_60(); - } - break; - case 0x61: - { - instr16_61(); - } - break; - case 0x61|0x100: - { - instr32_61(); - } - break; - case 0x62: - case 0x62|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_62_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_62_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x63: - case 0x63|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_63_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_63_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x64: - case 0x64|0x100: - { - instr_64(); - } - break; - case 0x65: - case 0x65|0x100: - { - instr_65(); - } - break; - case 0x66: - case 0x66|0x100: - { - instr_66(); - } - break; - case 0x67: - case 0x67|0x100: - { - instr_67(); - } - break; - case 0x68: - { - instr16_68(read_imm16()); - } - break; - case 0x68|0x100: - { - instr32_68(read_imm32s()); - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm16()); - } - else - { - instr16_69_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm16()); - } - } - break; - case 0x69|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm32s()); - } - else - { - instr32_69_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm32s()); - } - } - break; - case 0x6A: - { - instr16_6A(read_imm8s()); - } - break; - case 0x6A|0x100: - { - instr32_6A(read_imm8s()); - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8s()); - } - else - { - instr16_6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8s()); - } - } - break; - case 0x6B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8s()); - } - else - { - instr32_6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8s()); - } - } - break; - case 0x6C: - case 0x6C|0x100: - { - instr_6C(); - } - break; - case 0x6D: - { - instr16_6D(); - } - break; - case 0x6D|0x100: - { - instr32_6D(); - } - break; - case 0x6E: - case 0x6E|0x100: - { - instr_6E(); - } - break; - case 0x6F: - { - instr16_6F(); - } - break; - case 0x6F|0x100: - { - instr32_6F(); - } - break; - case 0x70: - case 0x70|0x100: - { - instr_70(read_imm8s()); - } - break; - case 0x71: - case 0x71|0x100: - { - instr_71(read_imm8s()); - } - break; - case 0x72: - case 0x72|0x100: - { - instr_72(read_imm8s()); - } - break; - case 0x73: - case 0x73|0x100: - { - instr_73(read_imm8s()); - } - break; - case 0x74: - case 0x74|0x100: - { - instr_74(read_imm8s()); - } - break; - case 0x75: - case 0x75|0x100: - { - instr_75(read_imm8s()); - } - break; - case 0x76: - case 0x76|0x100: - { - instr_76(read_imm8s()); - } - break; - case 0x77: - case 0x77|0x100: - { - instr_77(read_imm8s()); - } - break; - case 0x78: - case 0x78|0x100: - { - instr_78(read_imm8s()); - } - break; - case 0x79: - case 0x79|0x100: - { - instr_79(read_imm8s()); - } - break; - case 0x7A: - case 0x7A|0x100: - { - instr_7A(read_imm8s()); - } - break; - case 0x7B: - case 0x7B|0x100: - { - instr_7B(read_imm8s()); - } - break; - case 0x7C: - case 0x7C|0x100: - { - instr_7C(read_imm8s()); - } - break; - case 0x7D: - case 0x7D|0x100: - { - instr_7D(read_imm8s()); - } - break; - case 0x7E: - case 0x7E|0x100: - { - instr_7E(read_imm8s()); - } - break; - case 0x7F: - case 0x7F|0x100: - { - instr_7F(read_imm8s()); - } - break; - case 0x80: - case 0x80|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_80_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_80_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_80_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_2_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_80_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_3_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_80_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_80_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_80_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_80_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_80_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x81: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_81_0_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_0_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_81_1_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_1_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_81_2_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_2_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_81_3_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_3_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_81_4_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_4_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_81_5_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_5_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_81_6_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_6_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_81_7_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_81_7_reg(modrm_byte & 7, read_imm16()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x81|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_81_0_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_0_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_81_1_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_1_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_81_2_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_2_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_81_3_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_3_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_81_4_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_4_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_81_5_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_5_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_81_6_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_6_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_81_7_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_81_7_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x82: - case 0x82|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_82_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_82_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_82_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_2_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_82_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_3_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_82_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_82_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_82_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_82_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_82_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x83: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_83_0_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_0_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_83_1_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_1_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_83_2_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_2_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_83_3_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_3_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_83_4_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_4_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_83_5_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_5_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_83_6_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_6_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_83_7_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr16_83_7_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x83|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_83_0_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_0_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_83_1_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_1_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_83_2_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_2_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_83_3_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_3_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_83_4_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_4_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_83_5_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_5_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_83_6_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_6_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_83_7_mem(modrm_resolve(modrm_byte), read_imm8s()); - } - else - { - instr32_83_7_reg(modrm_byte & 7, read_imm8s()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x84: - case 0x84|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_84_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_84_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x85: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_85_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_85_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x85|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_85_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_85_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x86: - case 0x86|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_86_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_86_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x87: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_87_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_87_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x87|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_87_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_87_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x88: - case 0x88|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_88_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_88_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x89: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_89_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_89_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x89|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_89_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_89_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8A: - case 0x8A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_8A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_8A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_8B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_8B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_8B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_8B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_8C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_8C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8C|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_8C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_8C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_8D_mem_pre(); - instr16_8D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_8D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8D|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_8D_mem_pre(); - instr32_8D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_8D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8E: - case 0x8E|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_8E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_8E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8F: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_8F_0_mem_pre(); - instr16_8F_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_8F_0_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x8F|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_8F_0_mem_pre(); - instr32_8F_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_8F_0_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x90: - case 0x90|0x100: - { - instr_90(); - } - break; - case 0x91: - { - instr16_91(); - } - break; - case 0x91|0x100: - { - instr32_91(); - } - break; - case 0x92: - { - instr16_92(); - } - break; - case 0x92|0x100: - { - instr32_92(); - } - break; - case 0x93: - { - instr16_93(); - } - break; - case 0x93|0x100: - { - instr32_93(); - } - break; - case 0x94: - { - instr16_94(); - } - break; - case 0x94|0x100: - { - instr32_94(); - } - break; - case 0x95: - { - instr16_95(); - } - break; - case 0x95|0x100: - { - instr32_95(); - } - break; - case 0x96: - { - instr16_96(); - } - break; - case 0x96|0x100: - { - instr32_96(); - } - break; - case 0x97: - { - instr16_97(); - } - break; - case 0x97|0x100: - { - instr32_97(); - } - break; - case 0x98: - { - instr16_98(); - } - break; - case 0x98|0x100: - { - instr32_98(); - } - break; - case 0x99: - { - instr16_99(); - } - break; - case 0x99|0x100: - { - instr32_99(); - } - break; - case 0x9A: - { - instr16_9A(read_imm16(), read_imm16()); - } - break; - case 0x9A|0x100: - { - instr32_9A(read_imm32s(), read_imm16()); - } - break; - case 0x9B: - case 0x9B|0x100: - { - instr_9B(); - } - break; - case 0x9C: - { - instr16_9C(); - } - break; - case 0x9C|0x100: - { - instr32_9C(); - } - break; - case 0x9D: - { - instr16_9D(); - } - break; - case 0x9D|0x100: - { - instr32_9D(); - } - break; - case 0x9E: - case 0x9E|0x100: - { - instr_9E(); - } - break; - case 0x9F: - case 0x9F|0x100: - { - instr_9F(); - } - break; - case 0xA0: - case 0xA0|0x100: - { - instr_A0(read_moffs()); - } - break; - case 0xA1: - { - instr16_A1(read_moffs()); - } - break; - case 0xA1|0x100: - { - instr32_A1(read_moffs()); - } - break; - case 0xA2: - case 0xA2|0x100: - { - instr_A2(read_moffs()); - } - break; - case 0xA3: - { - instr16_A3(read_moffs()); - } - break; - case 0xA3|0x100: - { - instr32_A3(read_moffs()); - } - break; - case 0xA4: - case 0xA4|0x100: - { - instr_A4(); - } - break; - case 0xA5: - { - instr16_A5(); - } - break; - case 0xA5|0x100: - { - instr32_A5(); - } - break; - case 0xA6: - case 0xA6|0x100: - { - instr_A6(); - } - break; - case 0xA7: - { - instr16_A7(); - } - break; - case 0xA7|0x100: - { - instr32_A7(); - } - break; - case 0xA8: - case 0xA8|0x100: - { - instr_A8(read_imm8()); - } - break; - case 0xA9: - { - instr16_A9(read_imm16()); - } - break; - case 0xA9|0x100: - { - instr32_A9(read_imm32s()); - } - break; - case 0xAA: - case 0xAA|0x100: - { - instr_AA(); - } - break; - case 0xAB: - { - instr16_AB(); - } - break; - case 0xAB|0x100: - { - instr32_AB(); - } - break; - case 0xAC: - case 0xAC|0x100: - { - instr_AC(); - } - break; - case 0xAD: - { - instr16_AD(); - } - break; - case 0xAD|0x100: - { - instr32_AD(); - } - break; - case 0xAE: - case 0xAE|0x100: - { - instr_AE(); - } - break; - case 0xAF: - { - instr16_AF(); - } - break; - case 0xAF|0x100: - { - instr32_AF(); - } - break; - case 0xB0: - case 0xB0|0x100: - { - instr_B0(read_imm8()); - } - break; - case 0xB1: - case 0xB1|0x100: - { - instr_B1(read_imm8()); - } - break; - case 0xB2: - case 0xB2|0x100: - { - instr_B2(read_imm8()); - } - break; - case 0xB3: - case 0xB3|0x100: - { - instr_B3(read_imm8()); - } - break; - case 0xB4: - case 0xB4|0x100: - { - instr_B4(read_imm8()); - } - break; - case 0xB5: - case 0xB5|0x100: - { - instr_B5(read_imm8()); - } - break; - case 0xB6: - case 0xB6|0x100: - { - instr_B6(read_imm8()); - } - break; - case 0xB7: - case 0xB7|0x100: - { - instr_B7(read_imm8()); - } - break; - case 0xB8: - { - instr16_B8(read_imm16()); - } - break; - case 0xB8|0x100: - { - instr32_B8(read_imm32s()); - } - break; - case 0xB9: - { - instr16_B9(read_imm16()); - } - break; - case 0xB9|0x100: - { - instr32_B9(read_imm32s()); - } - break; - case 0xBA: - { - instr16_BA(read_imm16()); - } - break; - case 0xBA|0x100: - { - instr32_BA(read_imm32s()); - } - break; - case 0xBB: - { - instr16_BB(read_imm16()); - } - break; - case 0xBB|0x100: - { - instr32_BB(read_imm32s()); - } - break; - case 0xBC: - { - instr16_BC(read_imm16()); - } - break; - case 0xBC|0x100: - { - instr32_BC(read_imm32s()); - } - break; - case 0xBD: - { - instr16_BD(read_imm16()); - } - break; - case 0xBD|0x100: - { - instr32_BD(read_imm32s()); - } - break; - case 0xBE: - { - instr16_BE(read_imm16()); - } - break; - case 0xBE|0x100: - { - instr32_BE(read_imm32s()); - } - break; - case 0xBF: - { - instr16_BF(read_imm16()); - } - break; - case 0xBF|0x100: - { - instr32_BF(read_imm32s()); - } - break; - case 0xC0: - case 0xC0|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_C0_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_C0_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_C0_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_2_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_C0_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_3_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_C0_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_C0_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_C0_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_C0_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C0_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_C1_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_C1_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_C1_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_2_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_C1_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_3_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_C1_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_C1_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_C1_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_C1_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_C1_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC1|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_C1_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_C1_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_C1_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_2_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_C1_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_3_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_C1_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_C1_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_C1_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_C1_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_C1_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC2: - { - instr16_C2(read_imm16()); - } - break; - case 0xC2|0x100: - { - instr32_C2(read_imm16()); - } - break; - case 0xC3: - { - instr16_C3(); - } - break; - case 0xC3|0x100: - { - instr32_C3(); - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_C4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_C4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_C4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_C4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_C5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_C5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC5|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_C5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_C5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC6: - case 0xC6|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_C6_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_C6_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_C7_0_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_C7_0_reg(modrm_byte & 7, read_imm16()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC7|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_C7_0_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_C7_0_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - instr16_C8(read_imm16(), read_imm8()); - } - break; - case 0xC8|0x100: - { - instr32_C8(read_imm16(), read_imm8()); - } - break; - case 0xC9: - { - instr16_C9(); - } - break; - case 0xC9|0x100: - { - instr32_C9(); - } - break; - case 0xCA: - { - instr16_CA(read_imm16()); - } - break; - case 0xCA|0x100: - { - instr32_CA(read_imm16()); - } - break; - case 0xCB: - { - instr16_CB(); - } - break; - case 0xCB|0x100: - { - instr32_CB(); - } - break; - case 0xCC: - case 0xCC|0x100: - { - instr_CC(); - } - break; - case 0xCD: - case 0xCD|0x100: - { - instr_CD(read_imm8()); - } - break; - case 0xCE: - case 0xCE|0x100: - { - instr_CE(); - } - break; - case 0xCF: - { - instr16_CF(); - } - break; - case 0xCF|0x100: - { - instr32_CF(); - } - break; - case 0xD0: - case 0xD0|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_D0_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_D0_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_D0_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_D0_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_D0_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_D0_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_D0_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_D0_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D0_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_D1_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_D1_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_D1_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_D1_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_D1_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_D1_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_D1_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_D1_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D1_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD1|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_D1_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_D1_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_D1_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_D1_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_D1_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_D1_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_D1_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_D1_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D1_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD2: - case 0xD2|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_D2_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_D2_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_D2_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_D2_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_D2_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_D2_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_D2_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_D2_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_D2_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_D3_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_D3_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_D3_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_D3_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_D3_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_D3_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_D3_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_D3_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_D3_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD3|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_D3_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_D3_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_D3_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_D3_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_D3_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_D3_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_D3_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_D3_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_D3_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD4: - case 0xD4|0x100: - { - instr_D4(read_imm8()); - } - break; - case 0xD5: - case 0xD5|0x100: - { - instr_D5(read_imm8()); - } - break; - case 0xD6: - case 0xD6|0x100: - { - instr_D6(); - } - break; - case 0xD7: - case 0xD7|0x100: - { - instr_D7(); - } - break; - case 0xD8: - case 0xD8|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_D8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_D8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xD9: - case 0xD9|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_D9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_D9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDA: - case 0xDA|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDB: - case 0xDB|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDC: - case 0xDC|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDD: - case 0xDD|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDE: - case 0xDE|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDF: - case 0xDF|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_DF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_DF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xE0: - case 0xE0|0x100: - { - instr_E0(read_imm8s()); - } - break; - case 0xE1: - case 0xE1|0x100: - { - instr_E1(read_imm8s()); - } - break; - case 0xE2: - case 0xE2|0x100: - { - instr_E2(read_imm8s()); - } - break; - case 0xE3: - case 0xE3|0x100: - { - instr_E3(read_imm8s()); - } - break; - case 0xE4: - case 0xE4|0x100: - { - instr_E4(read_imm8()); - } - break; - case 0xE5: - { - instr16_E5(read_imm8()); - } - break; - case 0xE5|0x100: - { - instr32_E5(read_imm8()); - } - break; - case 0xE6: - case 0xE6|0x100: - { - instr_E6(read_imm8()); - } - break; - case 0xE7: - { - instr16_E7(read_imm8()); - } - break; - case 0xE7|0x100: - { - instr32_E7(read_imm8()); - } - break; - case 0xE8: - { - instr16_E8(read_imm16()); - } - break; - case 0xE8|0x100: - { - instr32_E8(read_imm32s()); - } - break; - case 0xE9: - { - instr16_E9(read_imm16()); - } - break; - case 0xE9|0x100: - { - instr32_E9(read_imm32s()); - } - break; - case 0xEA: - { - instr16_EA(read_imm16(), read_imm16()); - } - break; - case 0xEA|0x100: - { - instr32_EA(read_imm32s(), read_imm16()); - } - break; - case 0xEB: - case 0xEB|0x100: - { - instr_EB(read_imm8s()); - } - break; - case 0xEC: - case 0xEC|0x100: - { - instr_EC(); - } - break; - case 0xED: - { - instr16_ED(); - } - break; - case 0xED|0x100: - { - instr32_ED(); - } - break; - case 0xEE: - case 0xEE|0x100: - { - instr_EE(); - } - break; - case 0xEF: - { - instr16_EF(); - } - break; - case 0xEF|0x100: - { - instr32_EF(); - } - break; - case 0xF0: - case 0xF0|0x100: - { - instr_F0(); - } - break; - case 0xF1: - case 0xF1|0x100: - { - instr_F1(); - } - break; - case 0xF2: - case 0xF2|0x100: - { - instr_F2(); - } - break; - case 0xF3: - case 0xF3|0x100: - { - instr_F3(); - } - break; - case 0xF4: - case 0xF4|0x100: - { - instr_F4(); - } - break; - case 0xF5: - case 0xF5|0x100: - { - instr_F5(); - } - break; - case 0xF6: - case 0xF6|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_F6_0_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_F6_0_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_F6_1_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_F6_1_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_F6_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_F6_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_F6_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_F6_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_F6_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_F6_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_F6_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_F7_0_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_F7_0_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_F7_1_mem(modrm_resolve(modrm_byte), read_imm16()); - } - else - { - instr16_F7_1_reg(modrm_byte & 7, read_imm16()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_F7_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_F7_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_F7_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_F7_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_F7_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_F7_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_F7_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF7|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_F7_0_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_F7_0_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_F7_1_mem(modrm_resolve(modrm_byte), read_imm32s()); - } - else - { - instr32_F7_1_reg(modrm_byte & 7, read_imm32s()); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_F7_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_F7_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_F7_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_F7_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_F7_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_F7_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_F7_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF8: - case 0xF8|0x100: - { - instr_F8(); - } - break; - case 0xF9: - case 0xF9|0x100: - { - instr_F9(); - } - break; - case 0xFA: - case 0xFA|0x100: - { - instr_FA(); - } - break; - case 0xFB: - case 0xFB|0x100: - { - instr_FB(); - } - break; - case 0xFC: - case 0xFC|0x100: - { - instr_FC(); - } - break; - case 0xFD: - case 0xFD|0x100: - { - instr_FD(); - } - break; - case 0xFE: - case 0xFE|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_FE_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_FE_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_FE_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_FE_1_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xFF: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr16_FF_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr16_FF_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr16_FF_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr16_FF_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_FF_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_FF_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_FF_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr16_FF_6_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xFF|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr32_FF_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr32_FF_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr32_FF_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr32_FF_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_FF_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_FF_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_FF_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr32_FF_6_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - default: - assert(false); -} +#include "../../build/interpreter" } jit_instr_flags jit_instruction(int32_t opcode) { jit_instr_flags instr_flags = 0; - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - case 0x00|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_00_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_00_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_01_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_01_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x01|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_01_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_01_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x02: - case 0x02|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_02_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_02_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_03_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_03_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x03|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_03_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_03_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x04: - case 0x04|0x100: - { - gen_fn1("instr_04", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x05: - { - gen_fn1("instr16_05", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x05|0x100: - { - gen_fn1("instr32_05", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x06: - { - gen_fn0("instr16_06", 10); - } - break; - case 0x06|0x100: - { - gen_fn0("instr32_06", 10); - } - break; - case 0x07: - { - gen_fn0("instr16_07", 10); - } - break; - case 0x07|0x100: - { - gen_fn0("instr32_07", 10); - } - break; - case 0x08: - case 0x08|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_08_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_08_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x09: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_09_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_09_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x09|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_09_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_09_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x0A: - case 0x0A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0A_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0A_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x0B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x0B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x0C: - case 0x0C|0x100: - { - gen_fn1("instr_0C", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x0D: - { - gen_fn1("instr16_0D", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x0D|0x100: - { - gen_fn1("instr32_0D", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x0E: - { - gen_fn0("instr16_0E", 10); - } - break; - case 0x0E|0x100: - { - gen_fn0("instr32_0E", 10); - } - break; - case 0x0F: - { - instr_flags |= instr16_0F_jit(); - } - break; - case 0x0F|0x100: - { - instr_flags |= instr32_0F_jit(); - } - break; - case 0x10: - case 0x10|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_10_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_10_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_11_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_11_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x11|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_11_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_11_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x12: - case 0x12|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_12_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_12_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_13_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_13_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x13|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_13_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_13_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x14: - case 0x14|0x100: - { - gen_fn1("instr_14", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x15: - { - gen_fn1("instr16_15", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x15|0x100: - { - gen_fn1("instr32_15", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x16: - { - gen_fn0("instr16_16", 10); - } - break; - case 0x16|0x100: - { - gen_fn0("instr32_16", 10); - } - break; - case 0x17: - { - gen_fn0("instr16_17", 10); - } - break; - case 0x17|0x100: - { - gen_fn0("instr32_17", 10); - } - break; - case 0x18: - case 0x18|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_18_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_18_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x19: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_19_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_19_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x19|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_19_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_19_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x1A: - case 0x1A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_1A_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_1A_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x1B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_1B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_1B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x1B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_1B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_1B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x1C: - case 0x1C|0x100: - { - gen_fn1("instr_1C", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x1D: - { - gen_fn1("instr16_1D", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x1D|0x100: - { - gen_fn1("instr32_1D", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x1E: - { - gen_fn0("instr16_1E", 10); - } - break; - case 0x1E|0x100: - { - gen_fn0("instr32_1E", 10); - } - break; - case 0x1F: - { - gen_fn0("instr16_1F", 10); - } - break; - case 0x1F|0x100: - { - gen_fn0("instr32_1F", 10); - } - break; - case 0x20: - case 0x20|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_20_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_20_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_21_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_21_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x21|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_21_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_21_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x22: - case 0x22|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_22_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_22_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_23_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_23_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x23|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_23_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_23_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x24: - case 0x24|0x100: - { - gen_fn1("instr_24", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x25: - { - gen_fn1("instr16_25", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x25|0x100: - { - gen_fn1("instr32_25", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x26: - case 0x26|0x100: - { - instr_flags |= instr_26_jit(); - } - break; - case 0x27: - case 0x27|0x100: - { - gen_fn0("instr_27", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x28: - case 0x28|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_28_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_28_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_29_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_29_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x29|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_29_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_29_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x2A: - case 0x2A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_2A_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_2A_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_2B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_2B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x2B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_2B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_2B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x2C: - case 0x2C|0x100: - { - gen_fn1("instr_2C", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x2D: - { - gen_fn1("instr16_2D", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x2D|0x100: - { - gen_fn1("instr32_2D", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x2E: - case 0x2E|0x100: - { - instr_flags |= instr_2E_jit(); - } - break; - case 0x2F: - case 0x2F|0x100: - { - gen_fn0("instr_2F", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x30: - case 0x30|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_30_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_30_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x31: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_31_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_31_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x31|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_31_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_31_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x32: - case 0x32|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_32_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_32_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x33: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_33_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_33_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x33|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_33_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_33_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x34: - case 0x34|0x100: - { - gen_fn1("instr_34", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x35: - { - gen_fn1("instr16_35", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x35|0x100: - { - gen_fn1("instr32_35", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x36: - case 0x36|0x100: - { - instr_flags |= instr_36_jit(); - } - break; - case 0x37: - case 0x37|0x100: - { - gen_fn0("instr_37", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x38: - case 0x38|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_38_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_38_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x39: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_39_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_39_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x39|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_39_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_39_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x3A: - case 0x3A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_3A_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_3A_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x3B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_3B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_3B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x3B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_3B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_3B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x3C: - case 0x3C|0x100: - { - gen_fn1("instr_3C", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x3D: - { - gen_fn1("instr16_3D", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x3D|0x100: - { - gen_fn1("instr32_3D", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x3E: - case 0x3E|0x100: - { - instr_flags |= instr_3E_jit(); - } - break; - case 0x3F: - case 0x3F|0x100: - { - gen_fn0("instr_3F", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x40: - { - gen_fn0("instr16_40", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x40|0x100: - { - gen_fn0("instr32_40", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x41: - { - gen_fn0("instr16_41", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x41|0x100: - { - gen_fn0("instr32_41", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x42: - { - gen_fn0("instr16_42", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x42|0x100: - { - gen_fn0("instr32_42", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x43: - { - gen_fn0("instr16_43", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x43|0x100: - { - gen_fn0("instr32_43", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x44: - { - gen_fn0("instr16_44", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x44|0x100: - { - gen_fn0("instr32_44", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x45: - { - gen_fn0("instr16_45", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x45|0x100: - { - gen_fn0("instr32_45", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x46: - { - gen_fn0("instr16_46", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x46|0x100: - { - gen_fn0("instr32_46", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x47: - { - gen_fn0("instr16_47", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x47|0x100: - { - gen_fn0("instr32_47", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x48: - { - gen_fn0("instr16_48", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x48|0x100: - { - gen_fn0("instr32_48", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x49: - { - gen_fn0("instr16_49", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x49|0x100: - { - gen_fn0("instr32_49", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4A: - { - gen_fn0("instr16_4A", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4A|0x100: - { - gen_fn0("instr32_4A", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4B: - { - gen_fn0("instr16_4B", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4B|0x100: - { - gen_fn0("instr32_4B", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4C: - { - gen_fn0("instr16_4C", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4C|0x100: - { - gen_fn0("instr32_4C", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4D: - { - gen_fn0("instr16_4D", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4D|0x100: - { - gen_fn0("instr32_4D", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4E: - { - gen_fn0("instr16_4E", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4E|0x100: - { - gen_fn0("instr32_4E", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4F: - { - gen_fn0("instr16_4F", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x4F|0x100: - { - gen_fn0("instr32_4F", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x50: - { - gen_fn0("instr16_50", 10); - } - break; - case 0x50|0x100: - { - gen_fn0("instr32_50", 10); - } - break; - case 0x51: - { - gen_fn0("instr16_51", 10); - } - break; - case 0x51|0x100: - { - gen_fn0("instr32_51", 10); - } - break; - case 0x52: - { - gen_fn0("instr16_52", 10); - } - break; - case 0x52|0x100: - { - gen_fn0("instr32_52", 10); - } - break; - case 0x53: - { - gen_fn0("instr16_53", 10); - } - break; - case 0x53|0x100: - { - gen_fn0("instr32_53", 10); - } - break; - case 0x54: - { - gen_fn0("instr16_54", 10); - } - break; - case 0x54|0x100: - { - gen_fn0("instr32_54", 10); - } - break; - case 0x55: - { - gen_fn0("instr16_55", 10); - } - break; - case 0x55|0x100: - { - gen_fn0("instr32_55", 10); - } - break; - case 0x56: - { - gen_fn0("instr16_56", 10); - } - break; - case 0x56|0x100: - { - gen_fn0("instr32_56", 10); - } - break; - case 0x57: - { - gen_fn0("instr16_57", 10); - } - break; - case 0x57|0x100: - { - gen_fn0("instr32_57", 10); - } - break; - case 0x58: - { - gen_fn0("instr16_58", 10); - } - break; - case 0x58|0x100: - { - gen_fn0("instr32_58", 10); - } - break; - case 0x59: - { - gen_fn0("instr16_59", 10); - } - break; - case 0x59|0x100: - { - gen_fn0("instr32_59", 10); - } - break; - case 0x5A: - { - gen_fn0("instr16_5A", 10); - } - break; - case 0x5A|0x100: - { - gen_fn0("instr32_5A", 10); - } - break; - case 0x5B: - { - gen_fn0("instr16_5B", 10); - } - break; - case 0x5B|0x100: - { - gen_fn0("instr32_5B", 10); - } - break; - case 0x5C: - { - gen_fn0("instr16_5C", 10); - } - break; - case 0x5C|0x100: - { - gen_fn0("instr32_5C", 10); - } - break; - case 0x5D: - { - gen_fn0("instr16_5D", 10); - } - break; - case 0x5D|0x100: - { - gen_fn0("instr32_5D", 10); - } - break; - case 0x5E: - { - gen_fn0("instr16_5E", 10); - } - break; - case 0x5E|0x100: - { - gen_fn0("instr32_5E", 10); - } - break; - case 0x5F: - { - gen_fn0("instr16_5F", 10); - } - break; - case 0x5F|0x100: - { - gen_fn0("instr32_5F", 10); - } - break; - case 0x60: - { - gen_fn0("instr16_60", 10); - } - break; - case 0x60|0x100: - { - gen_fn0("instr32_60", 10); - } - break; - case 0x61: - { - gen_fn0("instr16_61", 10); - } - break; - case 0x61|0x100: - { - gen_fn0("instr32_61", 10); - } - break; - case 0x62: - case 0x62|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_62_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_62_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x63: - case 0x63|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_63_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_63_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x64: - case 0x64|0x100: - { - instr_flags |= instr_64_jit(); - } - break; - case 0x65: - case 0x65|0x100: - { - instr_flags |= instr_65_jit(); - } - break; - case 0x66: - case 0x66|0x100: - { - instr_flags |= instr_66_jit(); - } - break; - case 0x67: - case 0x67|0x100: - { - instr_flags |= instr_67_jit(); - } - break; - case 0x68: - { - gen_fn1("instr16_68", 10, read_imm16()); - } - break; - case 0x68|0x100: - { - gen_fn1("instr32_68", 10, read_imm32s()); - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr16_69_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm16); - } - else - { - gen_fn3("instr16_69_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x69|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr32_69_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm32s); - } - else - { - gen_fn3("instr32_69_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x6A: - { - gen_fn1("instr16_6A", 10, read_imm8s()); - } - break; - case 0x6A|0x100: - { - gen_fn1("instr32_6A", 10, read_imm8s()); - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr16_6B_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8s); - } - else - { - gen_fn3("instr16_6B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x6B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr32_6B_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8s); - } - else - { - gen_fn3("instr32_6B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x6C: - case 0x6C|0x100: - { - gen_fn0("instr_6C", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x6D: - { - gen_fn0("instr16_6D", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x6D|0x100: - { - gen_fn0("instr32_6D", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x6E: - case 0x6E|0x100: - { - gen_fn0("instr_6E", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x6F: - { - gen_fn0("instr16_6F", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x6F|0x100: - { - gen_fn0("instr32_6F", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x70: - case 0x70|0x100: - { - gen_fn1("instr_70", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x71: - case 0x71|0x100: - { - gen_fn1("instr_71", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x72: - case 0x72|0x100: - { - gen_fn1("instr_72", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x73: - case 0x73|0x100: - { - gen_fn1("instr_73", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x74: - case 0x74|0x100: - { - gen_fn1("instr_74", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x75: - case 0x75|0x100: - { - gen_fn1("instr_75", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x76: - case 0x76|0x100: - { - gen_fn1("instr_76", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x77: - case 0x77|0x100: - { - gen_fn1("instr_77", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x78: - case 0x78|0x100: - { - gen_fn1("instr_78", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x79: - case 0x79|0x100: - { - gen_fn1("instr_79", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7A: - case 0x7A|0x100: - { - gen_fn1("instr_7A", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7B: - case 0x7B|0x100: - { - gen_fn1("instr_7B", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7C: - case 0x7C|0x100: - { - gen_fn1("instr_7C", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7D: - case 0x7D|0x100: - { - gen_fn1("instr_7D", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7E: - case 0x7E|0x100: - { - gen_fn1("instr_7E", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x7F: - case 0x7F|0x100: - { - gen_fn1("instr_7F", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x80: - case 0x80|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_0_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_0_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_1_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_1_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_2_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_2_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_3_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_3_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_4_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_4_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_5_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_5_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_6_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_6_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_80_7_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_80_7_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x81: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_0_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_0_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_1_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_1_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_2_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_2_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_3_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_3_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_4_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_4_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_5_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_5_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_6_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_6_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_81_7_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_81_7_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x81|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_0_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_0_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_1_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_1_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_2_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_2_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_3_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_3_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_4_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_4_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_5_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_5_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_6_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_6_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_81_7_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_81_7_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x82: - case 0x82|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_0_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_0_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_1_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_1_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_2_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_2_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_3_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_3_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_4_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_4_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_5_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_5_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_6_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_6_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_82_7_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_82_7_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x83: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_0_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_0_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_1_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_1_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_2_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_2_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_3_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_3_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_4_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_4_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_5_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_5_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_6_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_6_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_83_7_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr16_83_7_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x83|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_0_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_0_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_1_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_1_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_2_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_2_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_3_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_3_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_4_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_4_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_5_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_5_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_6_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_6_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_83_7_mem", 16, modrm_byte, read_imm8s); - } - else - { - gen_fn2("instr32_83_7_reg", 16, modrm_byte & 7, read_imm8s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x84: - case 0x84|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_84_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_84_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x85: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_85_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_85_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x85|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_85_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_85_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x86: - case 0x86|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_86_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_86_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x87: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_87_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_87_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x87|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_87_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_87_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x88: - case 0x88|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_88_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_88_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x89: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_89_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_89_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x89|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_89_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_89_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x8A: - case 0x8A|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_8A_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_8A_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x8B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_8B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_8B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x8B|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_8B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_8B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x8C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_8C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_8C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8C|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_8C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_8C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_fn0("instr16_8D_mem_pre", 18); - gen_modrm_fn1("instr16_8D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - else - { - gen_fn2("instr16_8D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8D|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_fn0("instr32_8D_mem_pre", 18); - gen_modrm_fn1("instr32_8D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - else - { - gen_fn2("instr32_8D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8E: - case 0x8E|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_8E_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_8E_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x8F: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_fn0("instr16_8F_0_mem_pre", 20); - gen_modrm_fn0("instr16_8F_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_8F_0_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x8F|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_fn0("instr32_8F_0_mem_pre", 20); - gen_modrm_fn0("instr32_8F_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_8F_0_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x90: - case 0x90|0x100: - { - gen_fn0("instr_90", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x91: - { - gen_fn0("instr16_91", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x91|0x100: - { - gen_fn0("instr32_91", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x92: - { - gen_fn0("instr16_92", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x92|0x100: - { - gen_fn0("instr32_92", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x93: - { - gen_fn0("instr16_93", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x93|0x100: - { - gen_fn0("instr32_93", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x94: - { - gen_fn0("instr16_94", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x94|0x100: - { - gen_fn0("instr32_94", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x95: - { - gen_fn0("instr16_95", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x95|0x100: - { - gen_fn0("instr32_95", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x96: - { - gen_fn0("instr16_96", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x96|0x100: - { - gen_fn0("instr32_96", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x97: - { - gen_fn0("instr16_97", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x97|0x100: - { - gen_fn0("instr32_97", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x98: - { - gen_fn0("instr16_98", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x98|0x100: - { - gen_fn0("instr32_98", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x99: - { - gen_fn0("instr16_99", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x99|0x100: - { - gen_fn0("instr32_99", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0x9A: - { - gen_fn2("instr16_9A", 10, read_imm16(), read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x9A|0x100: - { - gen_fn2("instr32_9A", 10, read_imm32s(), read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x9B: - case 0x9B|0x100: - { - gen_fn0("instr_9B", 8); - } - break; - case 0x9C: - { - gen_fn0("instr16_9C", 10); - } - break; - case 0x9C|0x100: - { - gen_fn0("instr32_9C", 10); - } - break; - case 0x9D: - { - gen_fn0("instr16_9D", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x9D|0x100: - { - gen_fn0("instr32_9D", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x9E: - case 0x9E|0x100: - { - gen_fn0("instr_9E", 8); - } - break; - case 0x9F: - case 0x9F|0x100: - { - gen_fn0("instr_9F", 8); - } - break; - case 0xA0: - case 0xA0|0x100: - { - gen_fn1("instr_A0", 8, read_moffs()); - } - break; - case 0xA1: - { - gen_fn1("instr16_A1", 10, read_moffs()); - } - break; - case 0xA1|0x100: - { - gen_fn1("instr32_A1", 10, read_moffs()); - } - break; - case 0xA2: - case 0xA2|0x100: - { - gen_fn1("instr_A2", 8, read_moffs()); - } - break; - case 0xA3: - { - gen_fn1("instr16_A3", 10, read_moffs()); - } - break; - case 0xA3|0x100: - { - gen_fn1("instr32_A3", 10, read_moffs()); - } - break; - case 0xA4: - case 0xA4|0x100: - { - gen_fn0("instr_A4", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA5: - { - gen_fn0("instr16_A5", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA5|0x100: - { - gen_fn0("instr32_A5", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA6: - case 0xA6|0x100: - { - gen_fn0("instr_A6", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA7: - { - gen_fn0("instr16_A7", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA7|0x100: - { - gen_fn0("instr32_A7", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xA8: - case 0xA8|0x100: - { - gen_fn1("instr_A8", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xA9: - { - gen_fn1("instr16_A9", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xA9|0x100: - { - gen_fn1("instr32_A9", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xAA: - case 0xAA|0x100: - { - gen_fn0("instr_AA", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAB: - { - gen_fn0("instr16_AB", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAB|0x100: - { - gen_fn0("instr32_AB", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAC: - case 0xAC|0x100: - { - gen_fn0("instr_AC", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAD: - { - gen_fn0("instr16_AD", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAD|0x100: - { - gen_fn0("instr32_AD", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAE: - case 0xAE|0x100: - { - gen_fn0("instr_AE", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAF: - { - gen_fn0("instr16_AF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xAF|0x100: - { - gen_fn0("instr32_AF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xB0: - case 0xB0|0x100: - { - gen_fn1("instr_B0", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB1: - case 0xB1|0x100: - { - gen_fn1("instr_B1", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB2: - case 0xB2|0x100: - { - gen_fn1("instr_B2", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB3: - case 0xB3|0x100: - { - gen_fn1("instr_B3", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB4: - case 0xB4|0x100: - { - gen_fn1("instr_B4", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB5: - case 0xB5|0x100: - { - gen_fn1("instr_B5", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB6: - case 0xB6|0x100: - { - gen_fn1("instr_B6", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB7: - case 0xB7|0x100: - { - gen_fn1("instr_B7", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB8: - { - gen_fn1("instr16_B8", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB8|0x100: - { - gen_fn1("instr32_B8", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB9: - { - gen_fn1("instr16_B9", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xB9|0x100: - { - gen_fn1("instr32_B9", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBA: - { - gen_fn1("instr16_BA", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBA|0x100: - { - gen_fn1("instr32_BA", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBB: - { - gen_fn1("instr16_BB", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBB|0x100: - { - gen_fn1("instr32_BB", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBC: - { - gen_fn1("instr16_BC", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBC|0x100: - { - gen_fn1("instr32_BC", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBD: - { - gen_fn1("instr16_BD", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBD|0x100: - { - gen_fn1("instr32_BD", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBE: - { - gen_fn1("instr16_BE", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBE|0x100: - { - gen_fn1("instr32_BE", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBF: - { - gen_fn1("instr16_BF", 10, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xBF|0x100: - { - gen_fn1("instr32_BF", 10, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xC0: - case 0xC0|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_0_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_0_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_1_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_1_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_2_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_2_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_3_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_3_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_4_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_4_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_5_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_5_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_6_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_6_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C0_7_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C0_7_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_0_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_0_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_1_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_1_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_2_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_3_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_3_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_4_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_5_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_5_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_6_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C1_7_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_C1_7_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC1|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_0_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_0_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_1_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_1_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_2_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_3_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_3_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_4_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_5_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_5_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_6_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C1_7_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_C1_7_reg", 16, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC2: - { - gen_fn1("instr16_C2", 10, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xC2|0x100: - { - gen_fn1("instr32_C2", 10, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xC3: - { - gen_fn0("instr16_C3", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xC3|0x100: - { - gen_fn0("instr32_C3", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_C4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_C4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_C4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_C4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_C5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_C5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC5|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_C5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_C5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC6: - case 0xC6|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_C6_0_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_C6_0_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_C7_0_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_C7_0_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC7|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_C7_0_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_C7_0_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - gen_fn2("instr16_C8", 10, read_imm16(), read_imm8()); - } - break; - case 0xC8|0x100: - { - gen_fn2("instr32_C8", 10, read_imm16(), read_imm8()); - } - break; - case 0xC9: - { - gen_fn0("instr16_C9", 10); - } - break; - case 0xC9|0x100: - { - gen_fn0("instr32_C9", 10); - } - break; - case 0xCA: - { - gen_fn1("instr16_CA", 10, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCA|0x100: - { - gen_fn1("instr32_CA", 10, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCB: - { - gen_fn0("instr16_CB", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCB|0x100: - { - gen_fn0("instr32_CB", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCC: - case 0xCC|0x100: - { - gen_fn0("instr_CC", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCD: - case 0xCD|0x100: - { - gen_fn1("instr_CD", 8, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCE: - case 0xCE|0x100: - { - gen_fn0("instr_CE", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCF: - { - gen_fn0("instr16_CF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xCF|0x100: - { - gen_fn0("instr32_CF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xD0: - case 0xD0|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_0_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_0_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_1_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_1_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_2_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_2_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_3_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_3_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_4_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_4_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_5_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_5_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_6_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_6_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D0_7_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D0_7_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_6_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D1_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D1_7_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD1|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_6_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D1_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D1_7_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD2: - case 0xD2|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_0_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_0_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_1_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_1_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_2_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_2_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_3_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_3_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_4_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_4_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_5_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_5_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_6_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_6_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_D2_7_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_D2_7_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_6_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_D3_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_D3_7_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD3|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_6_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_D3_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_D3_7_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xD4: - case 0xD4|0x100: - { - gen_fn1("instr_D4", 8, read_imm8()); - } - break; - case 0xD5: - case 0xD5|0x100: - { - gen_fn1("instr_D5", 8, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xD6: - case 0xD6|0x100: - { - gen_fn0("instr_D6", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xD7: - case 0xD7|0x100: - { - gen_fn0("instr_D7", 8); - } - break; - case 0xD8: - case 0xD8|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_D8_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_D8_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xD9: - case 0xD9|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_D9_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_D9_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDA: - case 0xDA|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DA_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DA_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDB: - case 0xDB|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DB_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DB_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDC: - case 0xDC|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DC_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DC_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDD: - case 0xDD|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DD_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DD_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDE: - case 0xDE|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DE_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DE_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xDF: - case 0xDF|0x100: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_DF_mem", 12, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_DF_reg", 12, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xE0: - case 0xE0|0x100: - { - gen_fn1("instr_E0", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE1: - case 0xE1|0x100: - { - gen_fn1("instr_E1", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE2: - case 0xE2|0x100: - { - gen_fn1("instr_E2", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE3: - case 0xE3|0x100: - { - gen_fn1("instr_E3", 8, read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE4: - case 0xE4|0x100: - { - gen_fn1("instr_E4", 8, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE5: - { - gen_fn1("instr16_E5", 10, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE5|0x100: - { - gen_fn1("instr32_E5", 10, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE6: - case 0xE6|0x100: - { - gen_fn1("instr_E6", 8, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE7: - { - gen_fn1("instr16_E7", 10, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE7|0x100: - { - gen_fn1("instr32_E7", 10, read_imm8()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE8: - { - instr16_E8_jit(read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE8|0x100: - { - instr32_E8_jit(read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE9: - { - instr16_E9_jit(read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xE9|0x100: - { - instr32_E9_jit(read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEA: - { - gen_fn2("instr16_EA", 10, read_imm16(), read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEA|0x100: - { - gen_fn2("instr32_EA", 10, read_imm32s(), read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEB: - case 0xEB|0x100: - { - instr_EB_jit(read_imm8s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEC: - case 0xEC|0x100: - { - gen_fn0("instr_EC", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xED: - { - gen_fn0("instr16_ED", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xED|0x100: - { - gen_fn0("instr32_ED", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEE: - case 0xEE|0x100: - { - gen_fn0("instr_EE", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEF: - { - gen_fn0("instr16_EF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xEF|0x100: - { - gen_fn0("instr32_EF", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xF0: - case 0xF0|0x100: - { - instr_flags |= instr_F0_jit(); - } - break; - case 0xF1: - case 0xF1|0x100: - { - gen_fn0("instr_F1", 8); - } - break; - case 0xF2: - case 0xF2|0x100: - { - instr_flags |= instr_F2_jit(); - } - break; - case 0xF3: - case 0xF3|0x100: - { - instr_flags |= instr_F3_jit(); - } - break; - case 0xF4: - case 0xF4|0x100: - { - gen_fn0("instr_F4", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xF5: - case 0xF5|0x100: - { - gen_fn0("instr_F5", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xF6: - case 0xF6|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_F6_0_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_F6_0_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_F6_1_mem", 14, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_F6_1_reg", 14, modrm_byte & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_2_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_2_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_3_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_3_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_4_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_4_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_5_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_5_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_6_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_6_reg", 14, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_F6_7_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_F6_7_reg", 14, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_F7_0_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_F7_0_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_F7_1_mem", 16, modrm_byte, read_imm16); - } - else - { - gen_fn2("instr16_F7_1_reg", 16, modrm_byte & 7, read_imm16()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_F7_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_F7_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF7|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_F7_0_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_F7_0_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_F7_1_mem", 16, modrm_byte, read_imm32s); - } - else - { - gen_fn2("instr32_F7_1_reg", 16, modrm_byte & 7, read_imm32s()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_2_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_3_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_4_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_5_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_F7_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_F7_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xF8: - case 0xF8|0x100: - { - gen_fn0("instr_F8", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xF9: - case 0xF9|0x100: - { - gen_fn0("instr_F9", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xFA: - case 0xFA|0x100: - { - gen_fn0("instr_FA", 8); - } - break; - case 0xFB: - case 0xFB|0x100: - { - gen_fn0("instr_FB", 8); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0xFC: - case 0xFC|0x100: - { - gen_fn0("instr_FC", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xFD: - case 0xFD|0x100: - { - gen_fn0("instr_FD", 8); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xFE: - case 0xFE|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_FE_0_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_FE_0_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_FE_1_mem", 14, modrm_byte); - } - else - { - gen_fn1("instr_FE_1_reg", 14, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xFF: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_2_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_3_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_4_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_5_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr16_FF_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr16_FF_6_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xFF|0x100: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_0_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_1_reg", 16, modrm_byte & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_2_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_3_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_4_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_5_reg", 16, modrm_byte & 7); - } - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr32_FF_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr32_FF_6_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - default: - assert(false); -} +#include "../../build/jit" return instr_flags; } diff --git a/src/native/instructions_0f.c b/src/native/instructions_0f.c index 252ddf92..3824e76a 100644 --- a/src/native/instructions_0f.c +++ b/src/native/instructions_0f.c @@ -3655,18534 +3655,27 @@ void instr_0FFF() { trigger_ud(); } - void run_instruction0f_16(int32_t opcode) { - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0F00_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0F00_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0F00_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0F00_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0F00_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_0F00_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_5_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0F01_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0F01_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0F01_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0F01_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0F01_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_4_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0F01_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_0F01_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x02: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F02_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F02_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F03_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F03_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x04: - { - instr_0F04(); - } - break; - case 0x05: - { - instr_0F05(); - } - break; - case 0x06: - { - instr_0F06(); - } - break; - case 0x07: - { - instr_0F07(); - } - break; - case 0x08: - { - instr_0F08(); - } - break; - case 0x09: - { - instr_0F09(); - } - break; - case 0x0A: - { - instr_0F0A(); - } - break; - case 0x0B: - { - instr_0F0B(); - } - break; - case 0x0C: - { - instr_0F0C(); - } - break; - case 0x0D: - { - instr_0F0D(); - } - break; - case 0x0E: - { - instr_0F0E(); - } - break; - case 0x0F: - { - instr_0F0F(); - } - break; - case 0x10: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x12: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x14: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F14_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F14_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F14_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F14_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x15: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F15_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F15_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F15_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F15_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x16: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F16_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F16_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F16_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F16_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x17: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F17_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F17_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F17_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F17_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x18: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F18_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F18_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19: - { - instr_0F19(); - } - break; - case 0x1A: - { - instr_0F1A(); - } - break; - case 0x1B: - { - instr_0F1B(); - } - break; - case 0x1C: - { - instr_0F1C(); - } - break; - case 0x1D: - { - instr_0F1D(); - } - break; - case 0x1E: - { - instr_0F1E(); - } - break; - case 0x1F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F1F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F1F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x20: - { - int32_t modrm_byte = read_imm8(); - instr_0F20(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - instr_0F21(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x22: - { - int32_t modrm_byte = read_imm8(); - instr_0F22(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - instr_0F23(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x24: - { - instr_0F24(); - } - break; - case 0x25: - { - instr_0F25(); - } - break; - case 0x26: - { - instr_0F26(); - } - break; - case 0x27: - { - instr_0F27(); - } - break; - case 0x28: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F28_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F28_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F28_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F28_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2A: - { - instr_0F2A(); - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2D: - { - instr_0F2D(); - } - break; - case 0x2E: - { - instr_0F2E(); - } - break; - case 0x2F: - { - instr_0F2F(); - } - break; - case 0x30: - { - instr_0F30(); - } - break; - case 0x31: - { - instr_0F31(); - } - break; - case 0x32: - { - instr_0F32(); - } - break; - case 0x33: - { - instr_0F33(); - } - break; - case 0x34: - { - instr_0F34(); - } - break; - case 0x35: - { - instr_0F35(); - } - break; - case 0x36: - { - instr_0F36(); - } - break; - case 0x37: - { - instr_0F37(); - } - break; - case 0x38: - { - instr_0F38(); - } - break; - case 0x39: - { - instr_0F39(); - } - break; - case 0x3A: - { - instr_0F3A(); - } - break; - case 0x3B: - { - instr_0F3B(); - } - break; - case 0x3C: - { - instr_0F3C(); - } - break; - case 0x3D: - { - instr_0F3D(); - } - break; - case 0x3E: - { - instr_0F3E(); - } - break; - case 0x3F: - { - instr_0F3F(); - } - break; - case 0x40: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F40_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F40_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x41: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F41_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F41_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x42: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F42_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F42_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x43: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F43_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F43_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x44: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F44_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F44_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x45: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F45_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F45_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x46: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F46_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F46_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x47: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F47_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F47_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x48: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F48_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F48_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x49: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F49_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F49_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0F4F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0F4F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x50: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F50_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F50_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F50_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F50_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x51: - { - instr_0F51(); - } - break; - case 0x52: - { - instr_0F52(); - } - break; - case 0x53: - { - instr_0F53(); - } - break; - case 0x54: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F54_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F54_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F54_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F54_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x55: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F55_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F55_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F55_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F55_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x56: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F56_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F56_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F56_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F56_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x57: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F57_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F57_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F57_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F57_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x58: - { - instr_0F58(); - } - break; - case 0x59: - { - instr_0F59(); - } - break; - case 0x5A: - { - instr_0F5A(); - } - break; - case 0x5B: - { - instr_0F5B(); - } - break; - case 0x5C: - { - instr_0F5C(); - } - break; - case 0x5D: - { - instr_0F5D(); - } - break; - case 0x5E: - { - instr_0F5E(); - } - break; - case 0x5F: - { - instr_0F5F(); - } - break; - case 0x60: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F60_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F60_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F60_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F60_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x61: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F61_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F61_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F61_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F61_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x62: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F62_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F62_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F62_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F62_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x63: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F63_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F63_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F63_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F63_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x64: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F64_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F64_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F64_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F64_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x65: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F65_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F65_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F65_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F65_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x66: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F66_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F66_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F66_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F66_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x67: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F67_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F67_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F67_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F67_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x68: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F68_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F68_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F68_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F68_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F69_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F69_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6A: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6D: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x70: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_F20F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_F30F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0x71: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_4_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_4_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x72: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_4_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_4_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x73: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 3: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_3_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_3_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 7: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_7_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_7_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x74: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F74_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F74_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F74_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F74_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x75: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F75_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F75_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F75_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F75_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x76: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F76_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F76_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F76_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F76_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x77: - { - instr_0F77(); - } - break; - case 0x78: - { - instr_0F78(); - } - break; - case 0x79: - { - instr_0F79(); - } - break; - case 0x7A: - { - instr_0F7A(); - } - break; - case 0x7B: - { - instr_0F7B(); - } - break; - case 0x7C: - { - instr_0F7C(); - } - break; - case 0x7D: - { - instr_0F7D(); - } - break; - case 0x7E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x7F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x80: - { - instr16_0F80(read_imm16()); - } - break; - case 0x81: - { - instr16_0F81(read_imm16()); - } - break; - case 0x82: - { - instr16_0F82(read_imm16()); - } - break; - case 0x83: - { - instr16_0F83(read_imm16()); - } - break; - case 0x84: - { - instr16_0F84(read_imm16()); - } - break; - case 0x85: - { - instr16_0F85(read_imm16()); - } - break; - case 0x86: - { - instr16_0F86(read_imm16()); - } - break; - case 0x87: - { - instr16_0F87(read_imm16()); - } - break; - case 0x88: - { - instr16_0F88(read_imm16()); - } - break; - case 0x89: - { - instr16_0F89(read_imm16()); - } - break; - case 0x8A: - { - instr16_0F8A(read_imm16()); - } - break; - case 0x8B: - { - instr16_0F8B(read_imm16()); - } - break; - case 0x8C: - { - instr16_0F8C(read_imm16()); - } - break; - case 0x8D: - { - instr16_0F8D(read_imm16()); - } - break; - case 0x8E: - { - instr16_0F8E(read_imm16()); - } - break; - case 0x8F: - { - instr16_0F8F(read_imm16()); - } - break; - case 0x90: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F90_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F90_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x91: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F91_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F91_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x92: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F92_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F92_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x93: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F93_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F93_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x94: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F94_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F94_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x95: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F95_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F95_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x96: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F96_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F96_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x97: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F97_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F97_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x98: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F98_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F98_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x99: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F99_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F99_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA0: - { - instr16_0FA0(); - } - break; - case 0xA1: - { - instr16_0FA1(); - } - break; - case 0xA2: - { - instr_0FA2(); - } - break; - case 0xA3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FA3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FA3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FA4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr16_0FA4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - break; - case 0xA5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FA5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FA5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA6: - { - instr_0FA6(); - } - break; - case 0xA7: - { - instr_0FA7(); - } - break; - case 0xA8: - { - instr16_0FA8(); - } - break; - case 0xA9: - { - instr16_0FA9(); - } - break; - case 0xAA: - { - instr_0FAA(); - } - break; - case 0xAB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FAB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FAB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FAC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr16_0FAC_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - break; - case 0xAD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FAD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FAD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAE: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xAF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FAF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FAF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FB0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FB0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB2: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB6: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB7: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FB7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr16_F30FB8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_F30FB8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr16_0FB8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FB8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xB9: - { - instr_0FB9(); - } - break; - case 0xBA: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 4: - { - if(modrm_byte < 0xC0) - { - instr16_0FBA_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_0FBA_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr16_0FBA_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_0FBA_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr16_0FBA_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_0FBA_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr16_0FBA_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr16_0FBA_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xBB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FBB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FBB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FBC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FBC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FBD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FBD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBE: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FBE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FBE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FBF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FBF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FC0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FC0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr16_0FC1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr16_0FC1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC2: - { - instr_0FC2(); - } - break; - case 0xC3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FC3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FC3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FC4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660FC4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FC4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0FC4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FC5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660FC5_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FC5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0FC5_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC6: - { - instr_0FC6(); - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0FC7_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FC7_1_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0FC7_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FC7_6_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - instr_0FC8(); - } - break; - case 0xC9: - { - instr_0FC9(); - } - break; - case 0xCA: - { - instr_0FCA(); - } - break; - case 0xCB: - { - instr_0FCB(); - } - break; - case 0xCC: - { - instr_0FCC(); - } - break; - case 0xCD: - { - instr_0FCD(); - } - break; - case 0xCE: - { - instr_0FCE(); - } - break; - case 0xCF: - { - instr_0FCF(); - } - break; - case 0xD0: - { - instr_0FD0(); - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE0: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xED: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FED_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FED_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FED_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FED_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF0: - { - instr_0FF0(); - } - break; - case 0xF1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFF: - { - instr_0FFF(); - } - break; - default: - assert(false); -} +#include "../../build/interpreter0f_16" } void run_instruction0f_32(int32_t opcode) { - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0F00_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0F00_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0F00_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0F00_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0F00_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_0F00_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F00_5_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0F01_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0F01_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0F01_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0F01_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0F01_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_4_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0F01_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_0F01_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0F01_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x02: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F02_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F02_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F03_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F03_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x04: - { - instr_0F04(); - } - break; - case 0x05: - { - instr_0F05(); - } - break; - case 0x06: - { - instr_0F06(); - } - break; - case 0x07: - { - instr_0F07(); - } - break; - case 0x08: - { - instr_0F08(); - } - break; - case 0x09: - { - instr_0F09(); - } - break; - case 0x0A: - { - instr_0F0A(); - } - break; - case 0x0B: - { - instr_0F0B(); - } - break; - case 0x0C: - { - instr_0F0C(); - } - break; - case 0x0D: - { - instr_0F0D(); - } - break; - case 0x0E: - { - instr_0F0E(); - } - break; - case 0x0F: - { - instr_0F0F(); - } - break; - case 0x10: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F10_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F10_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x12: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F12_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F12_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F13_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F13_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x14: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F14_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F14_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F14_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F14_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x15: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F15_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F15_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F15_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F15_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x16: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F16_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F16_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F16_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F16_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x17: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F17_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F17_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F17_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F17_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x18: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F18_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F18_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19: - { - instr_0F19(); - } - break; - case 0x1A: - { - instr_0F1A(); - } - break; - case 0x1B: - { - instr_0F1B(); - } - break; - case 0x1C: - { - instr_0F1C(); - } - break; - case 0x1D: - { - instr_0F1D(); - } - break; - case 0x1E: - { - instr_0F1E(); - } - break; - case 0x1F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F1F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F1F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x20: - { - int32_t modrm_byte = read_imm8(); - instr_0F20(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - instr_0F21(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x22: - { - int32_t modrm_byte = read_imm8(); - instr_0F22(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - instr_0F23(modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x24: - { - instr_0F24(); - } - break; - case 0x25: - { - instr_0F25(); - } - break; - case 0x26: - { - instr_0F26(); - } - break; - case 0x27: - { - instr_0F27(); - } - break; - case 0x28: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F28_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F28_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F28_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F28_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F29_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F29_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2A: - { - instr_0F2A(); - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F2B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F2B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F2C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F2C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2D: - { - instr_0F2D(); - } - break; - case 0x2E: - { - instr_0F2E(); - } - break; - case 0x2F: - { - instr_0F2F(); - } - break; - case 0x30: - { - instr_0F30(); - } - break; - case 0x31: - { - instr_0F31(); - } - break; - case 0x32: - { - instr_0F32(); - } - break; - case 0x33: - { - instr_0F33(); - } - break; - case 0x34: - { - instr_0F34(); - } - break; - case 0x35: - { - instr_0F35(); - } - break; - case 0x36: - { - instr_0F36(); - } - break; - case 0x37: - { - instr_0F37(); - } - break; - case 0x38: - { - instr_0F38(); - } - break; - case 0x39: - { - instr_0F39(); - } - break; - case 0x3A: - { - instr_0F3A(); - } - break; - case 0x3B: - { - instr_0F3B(); - } - break; - case 0x3C: - { - instr_0F3C(); - } - break; - case 0x3D: - { - instr_0F3D(); - } - break; - case 0x3E: - { - instr_0F3E(); - } - break; - case 0x3F: - { - instr_0F3F(); - } - break; - case 0x40: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F40_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F40_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x41: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F41_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F41_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x42: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F42_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F42_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x43: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F43_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F43_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x44: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F44_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F44_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x45: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F45_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F45_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x46: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F46_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F46_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x47: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F47_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F47_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x48: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F48_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F48_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x49: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F49_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F49_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x4F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0F4F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0F4F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x50: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F50_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F50_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F50_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F50_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x51: - { - instr_0F51(); - } - break; - case 0x52: - { - instr_0F52(); - } - break; - case 0x53: - { - instr_0F53(); - } - break; - case 0x54: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F54_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F54_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F54_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F54_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x55: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F55_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F55_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F55_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F55_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x56: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F56_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F56_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F56_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F56_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x57: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F57_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F57_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F57_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F57_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x58: - { - instr_0F58(); - } - break; - case 0x59: - { - instr_0F59(); - } - break; - case 0x5A: - { - instr_0F5A(); - } - break; - case 0x5B: - { - instr_0F5B(); - } - break; - case 0x5C: - { - instr_0F5C(); - } - break; - case 0x5D: - { - instr_0F5D(); - } - break; - case 0x5E: - { - instr_0F5E(); - } - break; - case 0x5F: - { - instr_0F5F(); - } - break; - case 0x60: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F60_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F60_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F60_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F60_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x61: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F61_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F61_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F61_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F61_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x62: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F62_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F62_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F62_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F62_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x63: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F63_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F63_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F63_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F63_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x64: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F64_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F64_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F64_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F64_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x65: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F65_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F65_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F65_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F65_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x66: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F66_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F66_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F66_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F66_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x67: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F67_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F67_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F67_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F67_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x68: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F68_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F68_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F68_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F68_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F69_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F69_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F69_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6A: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6D: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F6F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F6F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x70: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_F20F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_F30F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F70_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0F70_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0x71: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_4_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_4_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F71_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F71_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F71_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F71_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x72: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_4_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_4_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F72_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F72_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F72_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F72_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x73: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_2_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_2_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_2_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 3: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_3_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_3_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_3_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_6_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_6_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - case 7: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F73_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_660F73_7_reg(modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F73_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr_0F73_7_reg(modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x74: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F74_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F74_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F74_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F74_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x75: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F75_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F75_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F75_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F75_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x76: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F76_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F76_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F76_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F76_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x77: - { - instr_0F77(); - } - break; - case 0x78: - { - instr_0F78(); - } - break; - case 0x79: - { - instr_0F79(); - } - break; - case 0x7A: - { - instr_0F7A(); - } - break; - case 0x7B: - { - instr_0F7B(); - } - break; - case 0x7C: - { - instr_0F7C(); - } - break; - case 0x7D: - { - instr_0F7D(); - } - break; - case 0x7E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F7E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F7E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x7F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0F7F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F7F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x80: - { - instr32_0F80(read_imm32s()); - } - break; - case 0x81: - { - instr32_0F81(read_imm32s()); - } - break; - case 0x82: - { - instr32_0F82(read_imm32s()); - } - break; - case 0x83: - { - instr32_0F83(read_imm32s()); - } - break; - case 0x84: - { - instr32_0F84(read_imm32s()); - } - break; - case 0x85: - { - instr32_0F85(read_imm32s()); - } - break; - case 0x86: - { - instr32_0F86(read_imm32s()); - } - break; - case 0x87: - { - instr32_0F87(read_imm32s()); - } - break; - case 0x88: - { - instr32_0F88(read_imm32s()); - } - break; - case 0x89: - { - instr32_0F89(read_imm32s()); - } - break; - case 0x8A: - { - instr32_0F8A(read_imm32s()); - } - break; - case 0x8B: - { - instr32_0F8B(read_imm32s()); - } - break; - case 0x8C: - { - instr32_0F8C(read_imm32s()); - } - break; - case 0x8D: - { - instr32_0F8D(read_imm32s()); - } - break; - case 0x8E: - { - instr32_0F8E(read_imm32s()); - } - break; - case 0x8F: - { - instr32_0F8F(read_imm32s()); - } - break; - case 0x90: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F90_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F90_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x91: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F91_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F91_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x92: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F92_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F92_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x93: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F93_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F93_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x94: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F94_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F94_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x95: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F95_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F95_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x96: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F96_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F96_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x97: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F97_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F97_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x98: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F98_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F98_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x99: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F99_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F99_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9A_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9A_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9B_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9B_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9C_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9C_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9D_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9D_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9E_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9E_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x9F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0F9F_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0F9F_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA0: - { - instr32_0FA0(); - } - break; - case 0xA1: - { - instr32_0FA1(); - } - break; - case 0xA2: - { - instr_0FA2(); - } - break; - case 0xA3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FA3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FA3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FA4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr32_0FA4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - break; - case 0xA5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FA5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FA5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA6: - { - instr_0FA6(); - } - break; - case 0xA7: - { - instr_0FA7(); - } - break; - case 0xA8: - { - instr32_0FA8(); - } - break; - case 0xA9: - { - instr32_0FA9(); - } - break; - case 0xAA: - { - instr_0FAA(); - } - break; - case 0xAB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FAB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FAB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FAC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr32_0FAC_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - break; - case 0xAD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FAD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FAD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAE: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_0_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_0_reg(modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_1_reg(modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_2_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_2_reg(modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_3_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_3_reg(modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_4_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_4_reg(modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_5_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_5_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_6_reg(modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr_0FAE_7_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FAE_7_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xAF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FAF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FAF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FB0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FB0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB2: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB6: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB7: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FB7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr32_F30FB8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_F30FB8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr32_0FB8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FB8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xB9: - { - instr_0FB9(); - } - break; - case 0xBA: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 4: - { - if(modrm_byte < 0xC0) - { - instr32_0FBA_4_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_0FBA_4_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - instr32_0FBA_5_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_0FBA_5_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr32_0FBA_6_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_0FBA_6_reg(modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - instr32_0FBA_7_mem(modrm_resolve(modrm_byte), read_imm8()); - } - else - { - instr32_0FBA_7_reg(modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xBB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FBB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FBB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FBC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FBC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FBD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FBD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBE: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FBE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FBE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FBF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FBF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FC0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FC0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr32_0FC1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr32_0FC1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC2: - { - instr_0FC2(); - } - break; - case 0xC3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - instr_0FC3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FC3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FC4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660FC4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FC4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0FC4_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FC5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_660FC5_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FC5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7, read_imm8()); - } - else - { - instr_0FC5_reg(modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC6: - { - instr_0FC6(); - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 1: - { - if(modrm_byte < 0xC0) - { - instr_0FC7_1_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FC7_1_reg(modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - instr_0FC7_6_mem(modrm_resolve(modrm_byte)); - } - else - { - instr_0FC7_6_reg(modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - instr_0FC8(); - } - break; - case 0xC9: - { - instr_0FC9(); - } - break; - case 0xCA: - { - instr_0FCA(); - } - break; - case 0xCB: - { - instr_0FCB(); - } - break; - case 0xCC: - { - instr_0FCC(); - } - break; - case 0xCD: - { - instr_0FCD(); - } - break; - case 0xCE: - { - instr_0FCE(); - } - break; - case 0xCF: - { - instr_0FCF(); - } - break; - case 0xD0: - { - instr_0FD0(); - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FD9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FD9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FD9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FD9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FDF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FDF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FDF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FDF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE0: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE0_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE0_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - instr_F20FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F20FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - instr_F30FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_F30FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FE9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FE9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FE9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FE9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xED: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FED_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FED_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FED_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FED_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FEF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FEF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FEF_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FEF_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF0: - { - instr_0FF0(); - } - break; - case 0xF1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF1_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF1_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF2_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF2_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF3_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF3_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF4_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF4_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF5_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF5_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF6_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF6_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF7_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF7_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF8_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF8_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FF9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FF9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FF9_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FF9_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFA_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFA_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFB_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFB_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFC_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFC_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFD_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFD_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - instr_660FFE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_660FFE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - instr_0FFE_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7); - } - else - { - instr_0FFE_reg(modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFF: - { - instr_0FFF(); - } - break; - default: - assert(false); -} +#include "../../build/interpreter0f_32" } jit_instr_flags jit_instruction0f_16(int32_t opcode) { jit_instr_flags instr_flags = 0; - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_4_reg", 16, modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_5_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_4_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x02: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F02_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F02_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F03_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F03_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x04: - { - gen_fn0("instr_0F04", 10); - } - break; - case 0x05: - { - gen_fn0("instr_0F05", 10); - } - break; - case 0x06: - { - gen_fn0("instr_0F06", 10); - } - break; - case 0x07: - { - gen_fn0("instr_0F07", 10); - } - break; - case 0x08: - { - gen_fn0("instr_0F08", 10); - } - break; - case 0x09: - { - gen_fn0("instr_0F09", 10); - } - break; - case 0x0A: - { - gen_fn0("instr_0F0A", 10); - } - break; - case 0x0B: - { - gen_fn0("instr_0F0B", 10); - } - break; - case 0x0C: - { - gen_fn0("instr_0F0C", 10); - } - break; - case 0x0D: - { - gen_fn0("instr_0F0D", 10); - } - break; - case 0x0E: - { - gen_fn0("instr_0F0E", 10); - } - break; - case 0x0F: - { - gen_fn0("instr_0F0F", 10); - } - break; - case 0x10: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F10_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F10_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F11_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F11_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x12: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F12_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F12_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F13_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F13_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F13_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F13_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x14: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F14_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F14_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F14_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F14_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x15: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F15_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F15_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F15_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F15_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x16: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F16_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F16_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F16_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F16_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x17: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F17_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F17_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F17_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F17_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x18: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F18_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F18_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19: - { - gen_fn0("instr_0F19", 10); - } - break; - case 0x1A: - { - gen_fn0("instr_0F1A", 10); - } - break; - case 0x1B: - { - gen_fn0("instr_0F1B", 10); - } - break; - case 0x1C: - { - gen_fn0("instr_0F1C", 10); - } - break; - case 0x1D: - { - gen_fn0("instr_0F1D", 10); - } - break; - case 0x1E: - { - gen_fn0("instr_0F1E", 10); - } - break; - case 0x1F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F1F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F1F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x20: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F20", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F21", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x22: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F22", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F23", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x24: - { - gen_fn0("instr_0F24", 10); - } - break; - case 0x25: - { - gen_fn0("instr_0F25", 10); - } - break; - case 0x26: - { - gen_fn0("instr_0F26", 10); - } - break; - case 0x27: - { - gen_fn0("instr_0F27", 10); - } - break; - case 0x28: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F28_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F28_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F28_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F28_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F29_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F29_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F29_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F29_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2A: - { - gen_fn0("instr_0F2A", 10); - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F2B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F2B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F2B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F2B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F2C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F2C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2D: - { - gen_fn0("instr_0F2D", 10); - } - break; - case 0x2E: - { - gen_fn0("instr_0F2E", 10); - } - break; - case 0x2F: - { - gen_fn0("instr_0F2F", 10); - } - break; - case 0x30: - { - gen_fn0("instr_0F30", 10); - } - break; - case 0x31: - { - gen_fn0("instr_0F31", 10); - } - break; - case 0x32: - { - gen_fn0("instr_0F32", 10); - } - break; - case 0x33: - { - gen_fn0("instr_0F33", 10); - } - break; - case 0x34: - { - gen_fn0("instr_0F34", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x35: - { - gen_fn0("instr_0F35", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x36: - { - gen_fn0("instr_0F36", 10); - } - break; - case 0x37: - { - gen_fn0("instr_0F37", 10); - } - break; - case 0x38: - { - gen_fn0("instr_0F38", 10); - } - break; - case 0x39: - { - gen_fn0("instr_0F39", 10); - } - break; - case 0x3A: - { - gen_fn0("instr_0F3A", 10); - } - break; - case 0x3B: - { - gen_fn0("instr_0F3B", 10); - } - break; - case 0x3C: - { - gen_fn0("instr_0F3C", 10); - } - break; - case 0x3D: - { - gen_fn0("instr_0F3D", 10); - } - break; - case 0x3E: - { - gen_fn0("instr_0F3E", 10); - } - break; - case 0x3F: - { - gen_fn0("instr_0F3F", 10); - } - break; - case 0x40: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F40_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F40_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x41: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F41_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F41_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x42: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F42_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F42_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x43: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F43_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F43_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x44: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F44_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F44_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x45: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F45_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F45_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x46: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F46_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F46_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x47: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F47_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F47_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x48: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F48_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F48_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x49: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F49_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F49_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4A_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4A_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4D_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4D_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0F4F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0F4F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x50: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F50_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F50_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F50_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F50_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x51: - { - gen_fn0("instr_0F51", 10); - } - break; - case 0x52: - { - gen_fn0("instr_0F52", 10); - } - break; - case 0x53: - { - gen_fn0("instr_0F53", 10); - } - break; - case 0x54: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F54_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F54_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F54_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F54_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x55: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F55_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F55_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F55_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F55_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x56: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F56_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F56_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F56_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F56_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x57: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F57_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F57_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F57_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F57_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x58: - { - gen_fn0("instr_0F58", 10); - } - break; - case 0x59: - { - gen_fn0("instr_0F59", 10); - } - break; - case 0x5A: - { - gen_fn0("instr_0F5A", 10); - } - break; - case 0x5B: - { - gen_fn0("instr_0F5B", 10); - } - break; - case 0x5C: - { - gen_fn0("instr_0F5C", 10); - } - break; - case 0x5D: - { - gen_fn0("instr_0F5D", 10); - } - break; - case 0x5E: - { - gen_fn0("instr_0F5E", 10); - } - break; - case 0x5F: - { - gen_fn0("instr_0F5F", 10); - } - break; - case 0x60: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F60_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F60_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F60_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F60_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x61: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F61_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F61_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F61_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F61_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x62: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F62_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F62_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F62_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F62_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x63: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F63_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F63_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F63_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F63_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x64: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F64_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F64_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F64_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F64_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x65: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F65_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F65_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F65_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F65_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x66: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F66_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F66_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F66_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F66_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x67: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F67_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F67_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F67_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F67_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x68: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F68_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F68_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F68_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F68_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F69_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F69_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F69_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F69_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6A: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6A_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6A_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6A_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6A_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6D: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6D_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6D_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F6F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F6F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x70: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_F20F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_F20F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_F30F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_F30F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0F70_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0F70_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0x71: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_4_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x72: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_4_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x73: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 3: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_3_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_3_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_3_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_3_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 7: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_7_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_7_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_7_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_7_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x74: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F74_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F74_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F74_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F74_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x75: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F75_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F75_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F75_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F75_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x76: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F76_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F76_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F76_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F76_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x77: - { - gen_fn0("instr_0F77", 10); - } - break; - case 0x78: - { - gen_fn0("instr_0F78", 10); - } - break; - case 0x79: - { - gen_fn0("instr_0F79", 10); - } - break; - case 0x7A: - { - gen_fn0("instr_0F7A", 10); - } - break; - case 0x7B: - { - gen_fn0("instr_0F7B", 10); - } - break; - case 0x7C: - { - gen_fn0("instr_0F7C", 10); - } - break; - case 0x7D: - { - gen_fn0("instr_0F7D", 10); - } - break; - case 0x7E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F7E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F7E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F7E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F7E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F7E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F7E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x7F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F7F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F7F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F7F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F7F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F7F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F7F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x80: - { - gen_fn1("instr16_0F80", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x81: - { - gen_fn1("instr16_0F81", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x82: - { - gen_fn1("instr16_0F82", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x83: - { - gen_fn1("instr16_0F83", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x84: - { - gen_fn1("instr16_0F84", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x85: - { - gen_fn1("instr16_0F85", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x86: - { - gen_fn1("instr16_0F86", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x87: - { - gen_fn1("instr16_0F87", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x88: - { - gen_fn1("instr16_0F88", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x89: - { - gen_fn1("instr16_0F89", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8A: - { - gen_fn1("instr16_0F8A", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8B: - { - gen_fn1("instr16_0F8B", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8C: - { - gen_fn1("instr16_0F8C", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8D: - { - gen_fn1("instr16_0F8D", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8E: - { - gen_fn1("instr16_0F8E", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8F: - { - gen_fn1("instr16_0F8F", 12, read_imm16()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x90: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F90_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F90_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x91: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F91_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F91_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x92: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F92_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F92_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x93: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F93_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F93_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x94: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F94_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F94_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x95: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F95_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F95_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x96: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F96_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F96_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x97: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F97_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F97_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x98: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F98_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F98_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x99: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F99_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F99_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9A_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9A_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA0: - { - gen_fn0("instr16_0FA0", 12); - } - break; - case 0xA1: - { - gen_fn0("instr16_0FA1", 12); - } - break; - case 0xA2: - { - gen_fn0("instr_0FA2", 10); - } - break; - case 0xA3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FA3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FA3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr16_0FA4_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr16_0FA4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FA5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FA5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA6: - { - gen_fn0("instr_0FA6", 10); - } - break; - case 0xA7: - { - gen_fn0("instr_0FA7", 10); - } - break; - case 0xA8: - { - gen_fn0("instr16_0FA8", 12); - } - break; - case 0xA9: - { - gen_fn0("instr16_0FA9", 12); - } - break; - case 0xAA: - { - gen_fn0("instr_0FAA", 10); - } - break; - case 0xAB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FAB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FAB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr16_0FAC_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr16_0FAC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xAD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FAD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FAD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xAE: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_4_reg", 16, modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_5_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xAF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FAF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FAF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FB0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FB0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB2: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB6: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB7: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_F30FB8_mem", 18, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_F30FB8_reg", 18, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FB8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FB8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xB9: - { - gen_fn0("instr_0FB9", 10); - } - break; - case 0xBA: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_0FBA_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_0FBA_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_0FBA_5_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_0FBA_5_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_0FBA_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_0FBA_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr16_0FBA_7_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr16_0FBA_7_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xBB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FBB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FBB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FBC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FBC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FBD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FBD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBE: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FBE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FBE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xBF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FBF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FBF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FC0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FC0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr16_0FC1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr16_0FC1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC2: - { - gen_fn0("instr_0FC2", 10); - } - break; - case 0xC3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FC3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FC3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660FC4_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660FC4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0FC4_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0FC4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660FC5_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660FC5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0FC5_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0FC5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC6: - { - gen_fn0("instr_0FC6", 10); - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FC7_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FC7_1_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FC7_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FC7_6_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - gen_fn0("instr_0FC8", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xC9: - { - gen_fn0("instr_0FC9", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCA: - { - gen_fn0("instr_0FCA", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCB: - { - gen_fn0("instr_0FCB", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCC: - { - gen_fn0("instr_0FCC", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCD: - { - gen_fn0("instr_0FCD", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCE: - { - gen_fn0("instr_0FCE", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCF: - { - gen_fn0("instr_0FCF", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xD0: - { - gen_fn0("instr_0FD0", 10); - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDD_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDD_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDF_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDF_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE0: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE0_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE0_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xED: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FED_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FED_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FED_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FED_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEF_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEF_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF0: - { - gen_fn0("instr_0FF0", 10); - } - break; - case 0xF1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFD_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFD_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFF: - { - gen_fn0("instr_0FFF", 10); - } - break; - default: - assert(false); -} +#include "../../build/jit0f_16" return instr_flags; } jit_instr_flags jit_instruction0f_32(int32_t opcode) { jit_instr_flags instr_flags = 0; - // XXX: This table is generated. Don't modify -switch(opcode) -{ - case 0x00: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_4_reg", 16, modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F00_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F00_5_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x01: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_4_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0F01_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0F01_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x02: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F02_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F02_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x03: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F03_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F03_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x04: - { - gen_fn0("instr_0F04", 10); - } - break; - case 0x05: - { - gen_fn0("instr_0F05", 10); - } - break; - case 0x06: - { - gen_fn0("instr_0F06", 10); - } - break; - case 0x07: - { - gen_fn0("instr_0F07", 10); - } - break; - case 0x08: - { - gen_fn0("instr_0F08", 10); - } - break; - case 0x09: - { - gen_fn0("instr_0F09", 10); - } - break; - case 0x0A: - { - gen_fn0("instr_0F0A", 10); - } - break; - case 0x0B: - { - gen_fn0("instr_0F0B", 10); - } - break; - case 0x0C: - { - gen_fn0("instr_0F0C", 10); - } - break; - case 0x0D: - { - gen_fn0("instr_0F0D", 10); - } - break; - case 0x0E: - { - gen_fn0("instr_0F0E", 10); - } - break; - case 0x0F: - { - gen_fn0("instr_0F0F", 10); - } - break; - case 0x10: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F10_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F10_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F10_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F10_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x11: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F11_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F11_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F11_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F11_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x12: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F12_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F12_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F12_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F12_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x13: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F13_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F13_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F13_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F13_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x14: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F14_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F14_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F14_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F14_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x15: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F15_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F15_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F15_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F15_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x16: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F16_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F16_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F16_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F16_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x17: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F17_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F17_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F17_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F17_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x18: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F18_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F18_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x19: - { - gen_fn0("instr_0F19", 10); - } - break; - case 0x1A: - { - gen_fn0("instr_0F1A", 10); - } - break; - case 0x1B: - { - gen_fn0("instr_0F1B", 10); - } - break; - case 0x1C: - { - gen_fn0("instr_0F1C", 10); - } - break; - case 0x1D: - { - gen_fn0("instr_0F1D", 10); - } - break; - case 0x1E: - { - gen_fn0("instr_0F1E", 10); - } - break; - case 0x1F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F1F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F1F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0x20: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F20", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x21: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F21", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x22: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F22", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x23: - { - int32_t modrm_byte = read_imm8(); - gen_fn2("instr_0F23", 10, modrm_byte & 7, modrm_byte >> 3 & 7); - } - break; - case 0x24: - { - gen_fn0("instr_0F24", 10); - } - break; - case 0x25: - { - gen_fn0("instr_0F25", 10); - } - break; - case 0x26: - { - gen_fn0("instr_0F26", 10); - } - break; - case 0x27: - { - gen_fn0("instr_0F27", 10); - } - break; - case 0x28: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F28_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F28_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F28_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F28_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x29: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F29_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F29_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F29_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F29_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2A: - { - gen_fn0("instr_0F2A", 10); - } - break; - case 0x2B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F2B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F2B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F2B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F2B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F2C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F2C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F2C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F2C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x2D: - { - gen_fn0("instr_0F2D", 10); - } - break; - case 0x2E: - { - gen_fn0("instr_0F2E", 10); - } - break; - case 0x2F: - { - gen_fn0("instr_0F2F", 10); - } - break; - case 0x30: - { - gen_fn0("instr_0F30", 10); - } - break; - case 0x31: - { - gen_fn0("instr_0F31", 10); - } - break; - case 0x32: - { - gen_fn0("instr_0F32", 10); - } - break; - case 0x33: - { - gen_fn0("instr_0F33", 10); - } - break; - case 0x34: - { - gen_fn0("instr_0F34", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x35: - { - gen_fn0("instr_0F35", 10); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x36: - { - gen_fn0("instr_0F36", 10); - } - break; - case 0x37: - { - gen_fn0("instr_0F37", 10); - } - break; - case 0x38: - { - gen_fn0("instr_0F38", 10); - } - break; - case 0x39: - { - gen_fn0("instr_0F39", 10); - } - break; - case 0x3A: - { - gen_fn0("instr_0F3A", 10); - } - break; - case 0x3B: - { - gen_fn0("instr_0F3B", 10); - } - break; - case 0x3C: - { - gen_fn0("instr_0F3C", 10); - } - break; - case 0x3D: - { - gen_fn0("instr_0F3D", 10); - } - break; - case 0x3E: - { - gen_fn0("instr_0F3E", 10); - } - break; - case 0x3F: - { - gen_fn0("instr_0F3F", 10); - } - break; - case 0x40: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F40_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F40_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x41: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F41_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F41_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x42: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F42_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F42_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x43: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F43_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F43_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x44: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F44_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F44_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x45: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F45_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F45_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x46: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F46_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F46_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x47: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F47_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F47_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x48: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F48_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F48_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x49: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F49_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F49_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4A_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4A_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4D_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4D_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x4F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0F4F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0F4F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x50: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F50_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F50_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F50_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F50_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x51: - { - gen_fn0("instr_0F51", 10); - } - break; - case 0x52: - { - gen_fn0("instr_0F52", 10); - } - break; - case 0x53: - { - gen_fn0("instr_0F53", 10); - } - break; - case 0x54: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F54_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F54_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F54_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F54_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x55: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F55_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F55_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F55_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F55_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x56: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F56_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F56_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F56_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F56_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x57: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F57_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F57_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F57_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F57_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x58: - { - gen_fn0("instr_0F58", 10); - } - break; - case 0x59: - { - gen_fn0("instr_0F59", 10); - } - break; - case 0x5A: - { - gen_fn0("instr_0F5A", 10); - } - break; - case 0x5B: - { - gen_fn0("instr_0F5B", 10); - } - break; - case 0x5C: - { - gen_fn0("instr_0F5C", 10); - } - break; - case 0x5D: - { - gen_fn0("instr_0F5D", 10); - } - break; - case 0x5E: - { - gen_fn0("instr_0F5E", 10); - } - break; - case 0x5F: - { - gen_fn0("instr_0F5F", 10); - } - break; - case 0x60: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F60_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F60_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F60_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F60_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x61: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F61_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F61_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F61_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F61_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x62: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F62_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F62_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F62_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F62_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x63: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F63_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F63_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F63_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F63_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x64: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F64_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F64_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F64_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F64_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x65: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F65_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F65_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F65_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F65_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x66: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F66_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F66_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F66_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F66_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x67: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F67_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F67_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F67_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F67_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x68: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F68_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F68_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F68_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F68_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x69: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F69_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F69_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F69_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F69_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6A: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6A_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6A_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6A_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6A_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6B: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6B_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6B_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6C: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6C_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6C_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6D: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6D_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6D_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x6F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F6F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F6F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F6F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F6F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F6F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F6F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x70: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_F20F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_F20F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_F30F70_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_F30F70_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0F70_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0F70_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0x71: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_4_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F71_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F71_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F71_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F71_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x72: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 4: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_4_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_4_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F72_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F72_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F72_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F72_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x73: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 2: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_2_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_2_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_2_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_2_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 3: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_3_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_3_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_3_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_3_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 6: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_6_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_6_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - case 7: - { - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_660F73_7_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_660F73_7_reg", 18, modrm_byte & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr_0F73_7_mem", 16, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr_0F73_7_reg", 16, modrm_byte & 7, read_imm8()); - } - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0x74: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F74_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F74_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F74_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F74_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x75: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F75_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F75_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F75_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F75_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x76: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F76_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F76_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F76_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F76_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x77: - { - gen_fn0("instr_0F77", 10); - } - break; - case 0x78: - { - gen_fn0("instr_0F78", 10); - } - break; - case 0x79: - { - gen_fn0("instr_0F79", 10); - } - break; - case 0x7A: - { - gen_fn0("instr_0F7A", 10); - } - break; - case 0x7B: - { - gen_fn0("instr_0F7B", 10); - } - break; - case 0x7C: - { - gen_fn0("instr_0F7C", 10); - } - break; - case 0x7D: - { - gen_fn0("instr_0F7D", 10); - } - break; - case 0x7E: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F7E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F7E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F7E_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F7E_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F7E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F7E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x7F: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660F7F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660F7F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30F7F_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30F7F_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F7F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F7F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0x80: - { - gen_fn1("instr32_0F80", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x81: - { - gen_fn1("instr32_0F81", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x82: - { - gen_fn1("instr32_0F82", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x83: - { - gen_fn1("instr32_0F83", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x84: - { - gen_fn1("instr32_0F84", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x85: - { - gen_fn1("instr32_0F85", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x86: - { - gen_fn1("instr32_0F86", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x87: - { - gen_fn1("instr32_0F87", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x88: - { - gen_fn1("instr32_0F88", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x89: - { - gen_fn1("instr32_0F89", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8A: - { - gen_fn1("instr32_0F8A", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8B: - { - gen_fn1("instr32_0F8B", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8C: - { - gen_fn1("instr32_0F8C", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8D: - { - gen_fn1("instr32_0F8D", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8E: - { - gen_fn1("instr32_0F8E", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x8F: - { - gen_fn1("instr32_0F8F", 12, read_imm32s()); - instr_flags |= JIT_INSTR_JUMP_FLAG; - } - break; - case 0x90: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F90_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F90_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x91: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F91_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F91_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x92: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F92_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F92_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x93: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F93_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F93_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x94: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F94_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F94_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x95: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F95_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F95_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x96: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F96_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F96_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x97: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F97_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F97_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x98: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F98_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F98_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x99: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F99_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F99_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9A: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9A_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9A_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9B: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9B_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9B_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9C: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9C_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9C_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9D: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9D_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9D_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9E: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9E_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9E_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0x9F: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0F9F_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0F9F_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA0: - { - gen_fn0("instr32_0FA0", 12); - } - break; - case 0xA1: - { - gen_fn0("instr32_0FA1", 12); - } - break; - case 0xA2: - { - gen_fn0("instr_0FA2", 10); - } - break; - case 0xA3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FA3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FA3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xA4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr32_0FA4_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr32_0FA4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FA5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FA5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xA6: - { - gen_fn0("instr_0FA6", 10); - } - break; - case 0xA7: - { - gen_fn0("instr_0FA7", 10); - } - break; - case 0xA8: - { - gen_fn0("instr32_0FA8", 12); - } - break; - case 0xA9: - { - gen_fn0("instr32_0FA9", 12); - } - break; - case 0xAA: - { - gen_fn0("instr_0FAA", 10); - } - break; - case 0xAB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FAB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FAB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xAC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr32_0FAC_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr32_0FAC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xAD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FAD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FAD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xAE: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 0: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_0_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_0_reg", 16, modrm_byte & 7); - } - } - break; - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_1_reg", 16, modrm_byte & 7); - } - } - break; - case 2: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_2_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_2_reg", 16, modrm_byte & 7); - } - } - break; - case 3: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_3_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_3_reg", 16, modrm_byte & 7); - } - } - break; - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_4_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_4_reg", 16, modrm_byte & 7); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_5_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_5_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_6_reg", 16, modrm_byte & 7); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FAE_7_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FAE_7_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xAF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FAF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FAF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FB0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FB0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB2: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB4: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB5: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xB6: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB7: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xB8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_F30FB8_mem", 18, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_F30FB8_reg", 18, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FB8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FB8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xB9: - { - gen_fn0("instr_0FB9", 10); - } - break; - case 0xBA: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 4: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_0FBA_4_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_0FBA_4_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 5: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_0FBA_5_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_0FBA_5_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_0FBA_6_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_0FBA_6_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - case 7: - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn1("instr32_0FBA_7_mem", 18, modrm_byte, read_imm8); - } - else - { - gen_fn2("instr32_0FBA_7_reg", 18, modrm_byte & 7, read_imm8()); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xBB: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FBB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FBB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBC: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FBC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FBC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBD: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FBD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FBD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xBE: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FBE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FBE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xBF: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FBF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FBF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC0: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FC0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FC0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC1: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr32_0FC1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr32_0FC1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - } - break; - case 0xC2: - { - gen_fn0("instr_0FC2", 10); - } - break; - case 0xC3: - { - int32_t modrm_byte = read_imm8(); - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FC3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FC3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - break; - case 0xC4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660FC4_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660FC4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0FC4_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0FC4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_660FC5_mem", 16, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_660FC5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_cb_fn2("instr_0FC5_mem", 14, modrm_byte, modrm_byte >> 3 & 7, read_imm8); - } - else - { - gen_fn3("instr_0FC5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7, read_imm8()); - } - } - } - break; - case 0xC6: - { - gen_fn0("instr_0FC6", 10); - } - break; - case 0xC7: - { - int32_t modrm_byte = read_imm8(); - switch(modrm_byte >> 3 & 7) - { - case 1: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FC7_1_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FC7_1_reg", 16, modrm_byte & 7); - } - } - break; - case 6: - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn0("instr_0FC7_6_mem", 16, modrm_byte); - } - else - { - gen_fn1("instr_0FC7_6_reg", 16, modrm_byte & 7); - } - } - break; - default: - assert(false); - trigger_ud(); - } - } - break; - case 0xC8: - { - gen_fn0("instr_0FC8", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xC9: - { - gen_fn0("instr_0FC9", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCA: - { - gen_fn0("instr_0FCA", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCB: - { - gen_fn0("instr_0FCB", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCC: - { - gen_fn0("instr_0FCC", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCD: - { - gen_fn0("instr_0FCD", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCE: - { - gen_fn0("instr_0FCE", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xCF: - { - gen_fn0("instr_0FCF", 10); - instr_flags |= JIT_INSTR_NONFAULTING_FLAG; - } - break; - case 0xD0: - { - gen_fn0("instr_0FD0", 10); - } - break; - case 0xD1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30FD6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30FD6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xD9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FD9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FD9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FD9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FD9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDD_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDD_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xDF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FDF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FDF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FDF_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FDF_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE0: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE0_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE0_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE0_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE0_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F2) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F20FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F20FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else if(prefixes_ & PREFIX_F3) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_F30FE6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_F30FE6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xE9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FE9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FE9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FE9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FE9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xED: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FED_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FED_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FED_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FED_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xEF: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FEF_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FEF_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FEF_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FEF_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF0: - { - gen_fn0("instr_0FF0", 10); - } - break; - case 0xF1: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF1_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF1_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF1_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF1_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF2: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF2_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF2_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF2_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF2_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF3: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF3_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF3_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF3_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF3_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF4: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF4_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF4_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF4_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF4_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF5: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF5_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF5_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF5_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF5_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF6: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF6_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF6_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF6_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF6_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF7: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF7_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF7_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF7_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF7_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF8: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF8_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF8_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF8_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF8_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xF9: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FF9_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FF9_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FF9_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FF9_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFA: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFA_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFA_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFA_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFA_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFB: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFB_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFB_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFB_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFB_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFC: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFC_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFC_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFC_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFC_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFD: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFD_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFD_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFD_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFD_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFE: - { - int32_t modrm_byte = read_imm8(); - int32_t prefixes_ = *prefixes; - if(prefixes_ & PREFIX_66) - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_660FFE_mem", 16, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_660FFE_reg", 16, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - else - { - if(modrm_byte < 0xC0) - { - gen_modrm_fn1("instr_0FFE_mem", 14, modrm_byte, modrm_byte >> 3 & 7); - } - else - { - gen_fn2("instr_0FFE_reg", 14, modrm_byte & 7, modrm_byte >> 3 & 7); - } - } - } - break; - case 0xFF: - { - gen_fn0("instr_0FFF", 10); - } - break; - default: - assert(false); -} +#include "../../build/jit0f_32" return instr_flags; }