📄 x86opc.cc
字号:
/* * HT Editor * x86opc.cc * * Copyright (C) 1999-2002 Stefan Weyergraf * Copyright (C) 2005-2008 Sebastian Biallas (sb@biallas.net) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "x86opc.h"x86opc_insn_op x86_op_type[] = {#define _0 0{TYPE_0, 0, 0, SIZE_0},#define _064 _0+1{TYPE_0, 0, INFO_DEFAULT_64, SIZE_0},#define Ap _064+1{TYPE_A, 0, 0, SIZE_P},#define Cd Ap+1{TYPE_C, 0, INFO_DEFAULT_64, SIZE_D},#define Dd Cd+1{TYPE_D, 0, 0, SIZE_D},#define Eb Dd+1{TYPE_E, 0, 0, SIZE_B},#define Ew Eb+1{TYPE_E, 0, 0, SIZE_W},#define Ed Ew+1{TYPE_E, 0, 0, SIZE_D},#define Eq Ed+1{TYPE_E, 0, 0, SIZE_Q},#define Er Eq+1{TYPE_E, 0, 0, SIZE_R},#define Ev Er+1{TYPE_E, 0, 0, SIZE_V},#define Ev64 Ev+1{TYPE_E, 0, INFO_DEFAULT_64, SIZE_V},#define Gb Ev64+1{TYPE_G, 0, 0, SIZE_B},#define Gw Gb+1{TYPE_G, 0, 0, SIZE_W},#define Gv Gw+1{TYPE_G, 0, 0, SIZE_V},#define Gv64 Gv+1{TYPE_G, 0, INFO_DEFAULT_64, SIZE_V},#define Gd Gv64+1{TYPE_G, 0, 0, SIZE_D},#define Gr Gd+1{TYPE_G, 0, 0, SIZE_R},#define Gq Gr+1{TYPE_G, 0, 0, SIZE_Q},#define Ib Gq+1{TYPE_I, 0, 0, SIZE_B},#define Iw Ib+1{TYPE_I, 0, 0, SIZE_W},#define Iv Iw+1{TYPE_I, 0, 0, SIZE_VV},#define Iv64 Iv+1{TYPE_I, 0, INFO_DEFAULT_64, SIZE_VV},#define Ivq Iv64+1{TYPE_I, 0, 0, SIZE_V},#define Ibv Ivq+1{TYPE_I, 0, 0, SIZE_BV},#define sIbv Ibv+1{TYPE_Is,0, 0, SIZE_BV},#define sIbv64 sIbv+1{TYPE_Is,0, INFO_DEFAULT_64, SIZE_BV},#define I4 sIbv64+1{TYPE_I4, 0, 0, SIZE_B},#define Jb I4+1{TYPE_J, 0, 0, SIZE_B},#define Jv Jb+1{TYPE_J, 0, 0, SIZE_VV},#define M Jv+1{TYPE_M, 0, 0, SIZE_0},#define Mw M+1{TYPE_M, 0, 0, SIZE_W},#define Md Mw+1{TYPE_M, 0, 0, SIZE_D},#define Mp Md+1{TYPE_M, 0, 0, SIZE_P},#define Mq Mp+1{TYPE_M, 0, 0, SIZE_Q},#define Mv Mq+1{TYPE_M, 0, 0, SIZE_V},#define Mr Mv+1{TYPE_M, 0, 0, SIZE_R},#define Mo Mr+1{TYPE_M, 0, 0, SIZE_O},#define Ms Mo+1{TYPE_M, 0, 0, SIZE_S},#define Ml Ms+1{TYPE_M, 0, 0, SIZE_L},#define Mt Ml+1{TYPE_M, 0, 0, SIZE_T},#define Ma Mt+1{TYPE_M, 0, 0, SIZE_A},#define Mu Ma+1{TYPE_M, 0, 0, SIZE_U},#define My Mu+1{TYPE_M, 0, 0, SIZE_Y},#define MRbr My+1{TYPE_MR, SIZE_R, 0, SIZE_B},#define MRwr MRbr+1{TYPE_MR, SIZE_R, 0, SIZE_W},#define MRdr MRwr+1{TYPE_MR, SIZE_R, 0, SIZE_D},#define MRbd MRdr+1{TYPE_MR, SIZE_D, 0, SIZE_B},#define Ob MRbd+1{TYPE_O, 0, 0, SIZE_B},#define Ov Ob+1{TYPE_O, 0, 0, SIZE_V},#define Pd Ov+1{TYPE_P, 0, 0, SIZE_D},#define Pq Pd+1{TYPE_P, 0, 0, SIZE_Q},#define Pu Pq+1{TYPE_P, 0, 0, SIZE_U},#define PRq Pu+1{TYPE_PR, 0, 0, SIZE_Q},#define PRu PRq+1{TYPE_PR, 0, 0, SIZE_U},#define Qd PRu+1{TYPE_Q, 0, 0, SIZE_D},#define Qq Qd+1{TYPE_Q, 0, 0, SIZE_Q},#define Qu Qq+1{TYPE_Q, 0, 0, SIZE_U},#define Qz Qu+1{TYPE_Q, 0, 0, SIZE_Z},#define Rw Qz+1{TYPE_R, 0, 0, SIZE_W},#define Rr Rw+1{TYPE_R, 0, 0, SIZE_R},#define Rr64 Rr+1{TYPE_R, 0, INFO_DEFAULT_64, SIZE_R},#define Sw Rr64+1{TYPE_S, 0, 0, SIZE_W},#define Vd Sw+1{TYPE_V, 0, 0, SIZE_D},#define Vq Vd+1{TYPE_V, 0, 0, SIZE_Q},#define Vo Vq+1{TYPE_V, 0, 0, SIZE_O},#define Vu Vo+1{TYPE_V, 0, 0, SIZE_U},#define Vz Vu+1{TYPE_V, 0, 0, SIZE_Z},#define VRq Vz+1{TYPE_VR, 0, 0, SIZE_Q},#define VRo VRq+1{TYPE_VR, 0, 0, SIZE_O},#define VVo VRo+1{TYPE_VV, 0, 0, SIZE_O},#define VIo VVo+1{TYPE_VI, 0, 0, SIZE_O},#define Ww VIo+1{TYPE_W, 0, 0, SIZE_W},#define Wd Ww+1{TYPE_W, 0, 0, SIZE_D},#define Wq Wd+1{TYPE_W, 0, 0, SIZE_Q},#define Wo Wq+1{TYPE_W, 0, 0, SIZE_O},#define Wu Wo+1{TYPE_W, 0, 0, SIZE_U},#define Wz Wu+1{TYPE_W, 0, 0, SIZE_Z},#define Yy Wz+1{TYPE_Y, 0, 0, SIZE_Y},#define YVy Yy+1{TYPE_YV, 0, 0, SIZE_Y},#define YIy YVy+1{TYPE_YI, 0, 0, SIZE_Y},#define YRy YIy+1{TYPE_YR, 0, 0, SIZE_Y},#define Xy YRy+1{TYPE_X, 0, 0, SIZE_Y},#define VD Xy+1{TYPE_VD, 0, 0, SIZE_O},#define VS0d VD+1{TYPE_VS, 0, 0, SIZE_D},#define VS0q VS0d+1{TYPE_VS, 0, 0, SIZE_Q},#define VS0o VS0q+1{TYPE_VS, 0, 0, SIZE_Q},#define VS00d VS0o+1{TYPE_VS, 0, 1, SIZE_Q},#define VS00q VS00d+1{TYPE_VS, 0, 1, SIZE_Q},#define VS00o VS00q+1{TYPE_VS, 0, 1, SIZE_O},#define VS1d VS00o+1{TYPE_VS, 1, 0, SIZE_D},#define VS1q VS1d+1{TYPE_VS, 1, 0, SIZE_Q},#define VS1o VS1q+1{TYPE_VS, 1, 0, SIZE_O},#define Ft VS1o+1{TYPE_F, 0, 0, SIZE_T},#define __st Ft+1{TYPE_Fx, 0, 0, SIZE_T},#define __1 __st+1{TYPE_Ix, 1, 0, SIZE_B},#define __3 __1+1{TYPE_Ix, 3, 0, SIZE_B},#define X__al __3+1{TYPE_RXx, 0, 0, SIZE_B},#define X__cl X__al+1{TYPE_RXx, 1, 0, SIZE_B},#define __al X__cl+1{TYPE_Rx, 0, 0, SIZE_B},#define __cl __al+1{TYPE_Rx, 1, 0, SIZE_B},#define __dl __cl+1{TYPE_Rx, 2, 0, SIZE_B},#define __bl __dl+1{TYPE_Rx, 3, 0, SIZE_B},#define __ah __bl+1{TYPE_Rx, 4, 0, SIZE_B},#define __ch __ah+1{TYPE_Rx, 5, 0, SIZE_B},#define __dh __ch+1{TYPE_Rx, 6, 0, SIZE_B},#define __bh __dh+1{TYPE_Rx, 7, 0, SIZE_B},#define X__ax __bh+1{TYPE_RXx, 0, 0, SIZE_V},#define __ax X__ax+1{TYPE_Rx, 0, 0, SIZE_V},#define __cx __ax+1{TYPE_Rx, 1, 0, SIZE_V},#define __dx __cx+1{TYPE_Rx, 2, 0, SIZE_V},#define __bx __dx+1{TYPE_Rx, 3, 0, SIZE_V},#define __sp __bx+1{TYPE_Rx, 4, 0, SIZE_V},#define __bp __sp+1{TYPE_Rx, 5, 0, SIZE_V},#define __si __bp+1{TYPE_Rx, 6, 0, SIZE_V},#define __di __si+1{TYPE_Rx, 7, 0, SIZE_V},#define __ax64 __di+1{TYPE_Rx, 0, INFO_DEFAULT_64, SIZE_V},#define __cx64 __ax64+1{TYPE_Rx, 1, INFO_DEFAULT_64, SIZE_V},#define __dx64 __cx64+1{TYPE_Rx, 2, INFO_DEFAULT_64, SIZE_V},#define __bx64 __dx64+1{TYPE_Rx, 3, INFO_DEFAULT_64, SIZE_V},#define __sp64 __bx64+1{TYPE_Rx, 4, INFO_DEFAULT_64, SIZE_V},#define __bp64 __sp64+1{TYPE_Rx, 5, INFO_DEFAULT_64, SIZE_V},#define __si64 __bp64+1{TYPE_Rx, 6, INFO_DEFAULT_64, SIZE_V},#define __di64 __si64+1{TYPE_Rx, 7, INFO_DEFAULT_64, SIZE_V},#define X__axw __di64+1{TYPE_RXx, 0, 0, SIZE_W},#define X__dxw X__axw+1{TYPE_RXx, 2, 0, SIZE_W},#define __axdq X__dxw+1{TYPE_Rx, 0, 0, SIZE_R},#define __cxdq __axdq+1{TYPE_Rx, 1, 0, SIZE_R},#define __dxdq __cxdq+1{TYPE_Rx, 2, 0, SIZE_R},#define __bxdq __dxdq+1{TYPE_Rx, 3, 0, SIZE_R},#define __spdq __bxdq+1{TYPE_Rx, 4, 0, SIZE_R},#define __bpdq __spdq+1{TYPE_Rx, 5, 0, SIZE_R},#define __sidq __bpdq+1{TYPE_Rx, 6, 0, SIZE_R},#define __didq __sidq+1{TYPE_Rx, 7, 0, SIZE_R},#define __es __didq+1{TYPE_Sx, 0, 0, SIZE_W},#define __cs __es+1{TYPE_Sx, 1, 0, SIZE_W},#define __ss __cs+1{TYPE_Sx, 2, 0, SIZE_W},#define __ds __ss+1{TYPE_Sx, 3, 0, SIZE_W},#define __fs __ds+1{TYPE_Sx, 4, 0, SIZE_W},#define __gs __fs+1{TYPE_Sx, 5, 0, SIZE_W},#define __st0 __gs+1{TYPE_F, 0, 0, SIZE_T},#define __st1 __st0+1{TYPE_F, 1, 0, SIZE_T},#define __st2 __st1+1{TYPE_F, 2, 0, SIZE_T},#define __st3 __st2+1{TYPE_F, 3, 0, SIZE_T},#define __st4 __st3+1{TYPE_F, 4, 0, SIZE_T},#define __st5 __st4+1{TYPE_F, 5, 0, SIZE_T},#define __st6 __st5+1{TYPE_F, 6, 0, SIZE_T},#define __st7 __st6+1{TYPE_F, 7, 0, SIZE_T},#define XMM0 __st7+1{TYPE_Vx, 0, 0, SIZE_O},};const char *x86_regs[4][8] = {{"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"},{"ax", "cx", "dx", "bx", "sp", "bp", "si", "di"},{"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"},{"rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi"},};const char *x86_64regs[4][16] = {{"al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"},{"ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"},{"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"},{"rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"},};const char *x86_ipregs[4] = { "", "ip", "eip", "rip",};const char *x86_segs[8] = {"es", "cs", "ss", "ds", "fs", "gs", 0, 0};#define GROUP_OPC_0F38 0#define GROUP_OPC_660F38 1#define GROUP_OPC_F20F38 2#define GROUP_OPC_0F3A 3#define GROUP_OPC_660F3A 4#define GROUP_OPC_0F7A 5#define GROUP_OPC_0F7B 6#define GROUP_OPC_0F24 7#define GROUP_OPC_0F25 8#define GROUP_80 0#define GROUP_81 1#define GROUP_83 2#define GROUP_8F 3#define GROUP_C0 4#define GROUP_C1 5#define GROUP_C6 6#define GROUP_C7 7#define GROUP_D0 8#define GROUP_D1 9#define GROUP_D2 10#define GROUP_D3 11#define GROUP_F6 12#define GROUP_F7 13#define GROUP_FE 14#define GROUP_FF 15#define GROUP_EXT_00 16#define GROUP_EXT_01 17#define GROUP_EXT_18 18#define GROUP_EXT_71 19#define GROUP_EXT_72 20#define GROUP_EXT_73 21#define GROUP_EXT_AE 22#define GROUP_EXT_BA 23#define GROUP_EXT_C7 24#define GROUP_EXT_66_C7 25#define GROUP_EXT_F3_C7 26#define GROUP_SPECIAL_0F01_0 0#define GROUP_SPECIAL_0F01_1 1#define GROUP_SPECIAL_0F01_2 2#define GROUP_SPECIAL_0F01_3 3#define GROUP_SPECIAL_0F01_7 4#define GROUP_SPECIAL_0FAE_0 5#define GROUP_SPECIAL_0FAE_1 6#define GROUP_SPECIAL_0FAE_2 7#define GROUP_SPECIAL_0FAE_3 8#define GROUP_SPECIAL_0FAE_4 9#define GROUP_SPECIAL_0FAE_5 10#define GROUP_SPECIAL_0FAE_6 11#define GROUP_SPECIAL_0FAE_7 12#define GROUP_0FAE 0#define GROUP_660F71 1#define GROUP_660F72 2#define GROUP_660F73 3/* Opcode name modifiers ~ ambigous size (need explicit "size ptr") first char after ~: | alternative mnemonics with same semantic (|je|jz) ? different name depending on opsize (?16bit|32bit|64bit) * different name depending on addrsize (*16bit|32bit|64bit) & same as '?' for disassembler and '|' for assembler */x86opc_insn x86_les = {"les", {Gv, Mp}};x86opc_insn x86_lds = {"lds", {Gv, Mp}};x86opc_insn x86_32_insns[256] = {/* 00 */{"add", {Eb, Gb}},{"add", {Ev, Gv}},{"add", {Gb, Eb}},{"add", {Gv, Ev}},{"add", {X__al, Ib}},{"add", {X__ax, Iv}},{"push", {__es}},{"pop", {__es}},/* 08 */{"or", {Eb, Gb}},{"or", {Ev, Gv}},{"or", {Gb, Eb}},{"or", {Gv, Ev}},{"or", {X__al, Ib}},{"or", {X__ax, Iv}},{"push", {__cs}},{0, {SPECIAL_TYPE_PREFIX}},/* 10 */{"adc", {Eb, Gb}},{"adc", {Ev, Gv}},{"adc", {Gb, Eb}},{"adc", {Gv, Ev}},{"adc", {X__al, Ib}},{"adc", {X__ax, Iv}},{"push", {__ss}},{"pop", {__ss}},/* 18 */{"sbb", {Eb, Gb}},{"sbb", {Ev, Gv}},{"sbb", {Gb, Eb}},{"sbb", {Gv, Ev}},{"sbb", {X__al, Ib}},{"sbb", {X__ax, Iv}},{"push", {__ds}},{"pop", {__ds}},/* 20 */{"and", {Eb, Gb}},{"and", {Ev, Gv}},{"and", {Gb, Eb}},{"and", {Gv, Ev}},{"and", {X__al, Ib}},{"and", {X__ax, Iv}},{0, {SPECIAL_TYPE_PREFIX}}, /* es-prefix */{"daa"},/* 28 */{"sub", {Eb, Gb}},{"sub", {Ev, Gv}},{"sub", {Gb, Eb}},{"sub", {Gv, Ev}},{"sub", {X__al, Ib}},{"sub", {X__ax, Iv}},{0, {SPECIAL_TYPE_PREFIX}}, /* cs-prefix */{"das"},/* 30 */{"xor", {Eb, Gb}},{"xor", {Ev, Gv}},{"xor", {Gb, Eb}},{"xor", {Gv, Ev}},{"xor", {X__al, Ib}},{"xor", {X__ax, Iv}},{0, {SPECIAL_TYPE_PREFIX}}, /* ss-prefix */{"aaa"},/* 38 */{"cmp", {Eb, Gb}},{"cmp", {Ev, Gv}},{"cmp", {Gb, Eb}},{"cmp", {Gv, Ev}},{"cmp", {X__al, Ib}},{"cmp", {X__ax, Iv}},{0, {SPECIAL_TYPE_PREFIX}}, /* ds-prefix */{"aas"},/* 40 */{"inc", {__ax}},{"inc", {__cx}},{"inc", {__dx}},{"inc", {__bx}},{"inc", {__sp}},{"inc", {__bp}},{"inc", {__si}},{"inc", {__di}},/* 48 */{"dec", {__ax}},{"dec", {__cx}},{"dec", {__dx}},{"dec", {__bx}},{"dec", {__sp}},{"dec", {__bp}},{"dec", {__si}},{"dec", {__di}},/* 50 */{"push", {__ax64}},{"push", {__cx64}},{"push", {__dx64}},{"push", {__bx64}},{"push", {__sp64}},{"push", {__bp64}},{"push", {__si64}},{"push", {__di64}},/* 58 */{"pop", {__ax64}},{"pop", {__cx64}},{"pop", {__dx64}},{"pop", {__bx64}},{"pop", {__sp64}},{"pop", {__bp64}},{"pop", {__si64}},{"pop", {__di64}},/* 60 */{"?pusha|pushad| x"},{"?popa|popad| x"},{"bound", {Gv, Mq}},{"arpl", {Ew, Rw}}, //{"movsxd", {Gv, Ed}},{0, {SPECIAL_TYPE_PREFIX}}, /* fs-prefix */{0, {SPECIAL_TYPE_PREFIX}}, /* gs-prefix */{0, {SPECIAL_TYPE_PREFIX}}, /* op-size prefix */{0, {SPECIAL_TYPE_PREFIX}}, /* addr-size prefix *//* 68 */{"push", {Iv64}},{"imul", {Gv, Ev, Iv}},{"push", {sIbv64}},{"imul", {Gv, Ev, sIbv}},{"insb"},{"?insw|insd|insd"},{"outsb"},{"?outsw|outsd|outsd"},/* 70 */{"jo", {Jb}},{"jno", {Jb}},{"|jc|jb|jnae", {Jb}},{"|jnc|jnb|jae", {Jb}},{"|jz|je", {Jb}},{"|jnz|jne", {Jb}},{"|jna|jbe", {Jb}},{"|ja|jnbe", {Jb}},/* 78 */{"js", {Jb}},{"jns", {Jb}},{"|jp|jpe", {Jb}},{"|jnp|jpo", {Jb}},{"|jl|jnge", {Jb}},{"|jnl|jge", {Jb}},{"|jng|jle", {Jb}},{"|jg|jnle", {Jb}},/* 80 */{0, {SPECIAL_TYPE_GROUP, GROUP_80}},{0, {SPECIAL_TYPE_GROUP, GROUP_81}},{0},{0, {SPECIAL_TYPE_GROUP, GROUP_83}},{"test", {Eb, Gb}},{"test", {Ev, Gv}},{"xchg", {Eb, Gb}},{"xchg", {Ev, Gv}},/* 88 */{"mov", {Eb, Gb}},{"mov", {Ev, Gv}},{"mov", {Gb, Eb}},{"mov", {Gv, Ev}},{"mov", {Ev, Sw}},{"lea", {Gv, M}},{"mov", {Sw, Ev}},{0, {SPECIAL_TYPE_GROUP, GROUP_8F}},/* 90 */{"nop"}, /* same as xchg (e)ax, (e)ax */{"xchg", {X__ax, __cx}},{"xchg", {X__ax, __dx}},{"xchg", {X__ax, __bx}},{"xchg", {X__ax, __sp}},{"xchg", {X__ax, __bp}},{"xchg", {X__ax, __si}},{"xchg", {X__ax, __di}},/* 98 */{"?cbw|cwde|cdqe"},{"?cwd|cdq|cqo"},{"~call", {Ap}},{"fwait"},{"?pushf|pushfd|pushfq", {_064}},{"?popf|popfd|popfq", {_064}},{"sahf"},{"lahf"},/* A0 */{"mov", {X__al, Ob}},{"mov", {X__ax, Ov}},{"mov", {Ob, X__al}},{"mov", {Ov, X__ax}},{"movsb"},{"?movsw|movsd|movsq"},{"cmpsb"},{"?cmpsw|cmpsd|cmpsq"},/* A8 */{"test", {X__al, Ib}},{"test", {X__ax, Iv}},{"stosb"},{"?stosw|stosd|stosq"},{"lodsb"},{"?lodsw|lodsd|lodsq"},{"scasb"},{"?scasw|scasd|scasq"},/* B0 */{"mov", {__al, Ib}},{"mov", {__cl, Ib}},{"mov", {__dl, Ib}},{"mov", {__bl, Ib}},{"mov", {__ah, Ib}},{"mov", {__ch, Ib}},{"mov", {__dh, Ib}},{"mov", {__bh, Ib}},/* B8 */{"mov", {__ax, Ivq}},{"mov", {__cx, Ivq}},{"mov", {__dx, Ivq}},{"mov", {__bx, Ivq}},{"mov", {__sp, Ivq}},{"mov", {__bp, Ivq}},{"mov", {__si, Ivq}},{"mov", {__di, Ivq}},/* C0 */{0, {SPECIAL_TYPE_GROUP, GROUP_C0}},{0, {SPECIAL_TYPE_GROUP, GROUP_C1}},{"ret", {Iw}},{"ret"},{0, {SPECIAL_TYPE_PREFIX}}, // VEX prefix {"les", {Gv, Mp}}{0, {SPECIAL_TYPE_PREFIX}}, // VEX prefix {"lds", {Gv, Mp}}{0, {SPECIAL_TYPE_GROUP, GROUP_C6}},{0, {SPECIAL_TYPE_GROUP, GROUP_C7}},/* C8 */{"enter", {Iw, Ib}},{"leave"},{"retf", {Iw}},{"retf"},{"int", {__3}},{"int", {Ib}},{"into"},{"?iret|iretd|iretq"},/* D0 */{0, {SPECIAL_TYPE_GROUP, GROUP_D0}},{0, {SPECIAL_TYPE_GROUP, GROUP_D1}},{0, {SPECIAL_TYPE_GROUP, GROUP_D2}},{0, {SPECIAL_TYPE_GROUP, GROUP_D3}},{"aam", {Ib}},{"aad", {Ib}},{"setalc"},{"xlat"},/* D8 */{0, {SPECIAL_TYPE_FGROUP, 0}},{0, {SPECIAL_TYPE_FGROUP, 1}},{0, {SPECIAL_TYPE_FGROUP, 2}},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -