⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dis.c

📁 linux 内核源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * arch/s390/kernel/dis.c * * Disassemble s390 instructions. * * Copyright IBM Corp. 2007 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), */#include <linux/sched.h>#include <linux/kernel.h>#include <linux/string.h>#include <linux/errno.h>#include <linux/ptrace.h>#include <linux/timer.h>#include <linux/mm.h>#include <linux/smp.h>#include <linux/smp_lock.h>#include <linux/init.h>#include <linux/interrupt.h>#include <linux/delay.h>#include <linux/module.h>#include <linux/kallsyms.h>#include <linux/reboot.h>#include <linux/kprobes.h>#include <linux/kdebug.h>#include <asm/system.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/atomic.h>#include <asm/mathemu.h>#include <asm/cpcmd.h>#include <asm/s390_ext.h>#include <asm/lowcore.h>#include <asm/debug.h>#ifndef CONFIG_64BIT#define ONELONG "%08lx: "#else /* CONFIG_64BIT */#define ONELONG "%016lx: "#endif /* CONFIG_64BIT */#define OPERAND_GPR	0x1	/* Operand printed as %rx */#define OPERAND_FPR	0x2	/* Operand printed as %fx */#define OPERAND_AR	0x4	/* Operand printed as %ax */#define OPERAND_CR	0x8	/* Operand printed as %cx */#define OPERAND_DISP	0x10	/* Operand printed as displacement */#define OPERAND_BASE	0x20	/* Operand printed as base register */#define OPERAND_INDEX	0x40	/* Operand printed as index register */#define OPERAND_PCREL	0x80	/* Operand printed as pc-relative symbol */#define OPERAND_SIGNED	0x100	/* Operand printed as signed value */#define OPERAND_LENGTH	0x200	/* Operand printed as length (+1) */enum {	UNUSED,	/* Indicates the end of the operand list */	R_8,	/* GPR starting at position 8 */	R_12,	/* GPR starting at position 12 */	R_16,	/* GPR starting at position 16 */	R_20,	/* GPR starting at position 20 */	R_24,	/* GPR starting at position 24 */	R_28,	/* GPR starting at position 28 */	R_32,	/* GPR starting at position 32 */	F_8,	/* FPR starting at position 8 */	F_12,	/* FPR starting at position 12 */	F_16,	/* FPR starting at position 16 */	F_20,	/* FPR starting at position 16 */	F_24,	/* FPR starting at position 24 */	F_28,	/* FPR starting at position 28 */	F_32,	/* FPR starting at position 32 */	A_8,	/* Access reg. starting at position 8 */	A_12,	/* Access reg. starting at position 12 */	A_24,	/* Access reg. starting at position 24 */	A_28,	/* Access reg. starting at position 28 */	C_8,	/* Control reg. starting at position 8 */	C_12,	/* Control reg. starting at position 12 */	B_16,	/* Base register starting at position 16 */	B_32,	/* Base register starting at position 32 */	X_12,	/* Index register starting at position 12 */	D_20,	/* Displacement starting at position 20 */	D_36,	/* Displacement starting at position 36 */	D20_20,	/* 20 bit displacement starting at 20 */	L4_8,	/* 4 bit length starting at position 8 */	L4_12,	/* 4 bit length starting at position 12 */	L8_8,	/* 8 bit length starting at position 8 */	U4_8,	/* 4 bit unsigned value starting at 8 */	U4_12,	/* 4 bit unsigned value starting at 12 */	U4_16,	/* 4 bit unsigned value starting at 16 */	U4_20,	/* 4 bit unsigned value starting at 20 */	U8_8,	/* 8 bit unsigned value starting at 8 */	U8_16,	/* 8 bit unsigned value starting at 16 */	I16_16,	/* 16 bit signed value starting at 16 */	U16_16,	/* 16 bit unsigned value starting at 16 */	J16_16,	/* PC relative jump offset at 16 */	J32_16,	/* PC relative long offset at 16 */	I32_16,	/* 32 bit signed value starting at 16 */	U32_16,	/* 32 bit unsigned value starting at 16 */	M_16,	/* 4 bit optional mask starting at 16 */	RO_28,	/* optional GPR starting at position 28 */};/* * Enumeration of the different instruction formats. * For details consult the principles of operation. */enum {	INSTR_INVALID,	INSTR_E, INSTR_RIE_RRP, INSTR_RIL_RI, INSTR_RIL_RP, INSTR_RIL_RU,	INSTR_RIL_UP, INSTR_RI_RI, INSTR_RI_RP, INSTR_RI_RU, INSTR_RI_UP,	INSTR_RRE_00, INSTR_RRE_0R, INSTR_RRE_AA, INSTR_RRE_AR, INSTR_RRE_F0,	INSTR_RRE_FF, INSTR_RRE_R0, INSTR_RRE_RA, INSTR_RRE_RF, INSTR_RRE_RR,	INSTR_RRE_RR_OPT, INSTR_RRF_F0FF, INSTR_RRF_FUFF, INSTR_RRF_M0RR,	INSTR_RRF_R0RR, INSTR_RRF_RURR, INSTR_RRF_U0FF, INSTR_RRF_U0RF,	INSTR_RR_FF, INSTR_RR_R0, INSTR_RR_RR, INSTR_RR_U0, INSTR_RR_UR,	INSTR_RSE_CCRD, INSTR_RSE_RRRD, INSTR_RSE_RURD, INSTR_RSI_RRP,	INSTR_RSL_R0RD, INSTR_RSY_AARD, INSTR_RSY_CCRD, INSTR_RSY_RRRD,	INSTR_RSY_RURD, INSTR_RS_AARD, INSTR_RS_CCRD, INSTR_RS_R0RD,	INSTR_RS_RRRD, INSTR_RS_RURD, INSTR_RXE_FRRD, INSTR_RXE_RRRD,	INSTR_RXF_FRRDF, INSTR_RXY_FRRD, INSTR_RXY_RRRD, INSTR_RX_FRRD,	INSTR_RX_RRRD, INSTR_RX_URRD, INSTR_SIY_URD, INSTR_SI_URD,	INSTR_SSE_RDRD, INSTR_SSF_RRDRD, INSTR_SS_L0RDRD, INSTR_SS_LIRDRD,	INSTR_SS_LLRDRD, INSTR_SS_RRRDRD, INSTR_SS_RRRDRD2, INSTR_SS_RRRDRD3,	INSTR_S_00, INSTR_S_RD,};struct operand {	int bits;		/* The number of bits in the operand. */	int shift;		/* The number of bits to shift. */	int flags;		/* One bit syntax flags. */};struct insn {	const char name[5];	unsigned char opfrag;	unsigned char format;};static const struct operand operands[] ={	[UNUSED]  = { 0, 0, 0 },	[R_8]	 = {  4,  8, OPERAND_GPR },	[R_12]	 = {  4, 12, OPERAND_GPR },	[R_16]	 = {  4, 16, OPERAND_GPR },	[R_20]	 = {  4, 20, OPERAND_GPR },	[R_24]	 = {  4, 24, OPERAND_GPR },	[R_28]	 = {  4, 28, OPERAND_GPR },	[R_32]	 = {  4, 32, OPERAND_GPR },	[F_8]	 = {  4,  8, OPERAND_FPR },	[F_12]	 = {  4, 12, OPERAND_FPR },	[F_16]	 = {  4, 16, OPERAND_FPR },	[F_20]	 = {  4, 16, OPERAND_FPR },	[F_24]	 = {  4, 24, OPERAND_FPR },	[F_28]	 = {  4, 28, OPERAND_FPR },	[F_32]	 = {  4, 32, OPERAND_FPR },	[A_8]	 = {  4,  8, OPERAND_AR },	[A_12]	 = {  4, 12, OPERAND_AR },	[A_24]	 = {  4, 24, OPERAND_AR },	[A_28]	 = {  4, 28, OPERAND_AR },	[C_8]	 = {  4,  8, OPERAND_CR },	[C_12]	 = {  4, 12, OPERAND_CR },	[B_16]	 = {  4, 16, OPERAND_BASE | OPERAND_GPR },	[B_32]	 = {  4, 32, OPERAND_BASE | OPERAND_GPR },	[X_12]	 = {  4, 12, OPERAND_INDEX | OPERAND_GPR },	[D_20]	 = { 12, 20, OPERAND_DISP },	[D_36]	 = { 12, 36, OPERAND_DISP },	[D20_20] = { 20, 20, OPERAND_DISP | OPERAND_SIGNED },	[L4_8]	 = {  4,  8, OPERAND_LENGTH },	[L4_12]  = {  4, 12, OPERAND_LENGTH },	[L8_8]	 = {  8,  8, OPERAND_LENGTH },	[U4_8]	 = {  4,  8, 0 },	[U4_12]  = {  4, 12, 0 },	[U4_16]  = {  4, 16, 0 },	[U4_20]  = {  4, 20, 0 },	[U8_8]	 = {  8,  8, 0 },	[U8_16]  = {  8, 16, 0 },	[I16_16] = { 16, 16, OPERAND_SIGNED },	[U16_16] = { 16, 16, 0 },	[J16_16] = { 16, 16, OPERAND_PCREL },	[J32_16] = { 32, 16, OPERAND_PCREL },	[I32_16] = { 32, 16, OPERAND_SIGNED },	[U32_16] = { 32, 16, 0 },	[M_16]	 = {  4, 16, 0 },	[RO_28]  = {  4, 28, OPERAND_GPR }};static const unsigned char formats[][7] = {	[INSTR_E]	  = { 0xff, 0,0,0,0,0,0 },	       /* e.g. pr    */	[INSTR_RIE_RRP]	  = { 0xff, R_8,R_12,J16_16,0,0,0 },   /* e.g. brxhg */	[INSTR_RIL_RP]	  = { 0x0f, R_8,J32_16,0,0,0,0 },      /* e.g. brasl */	[INSTR_RIL_UP]	  = { 0x0f, U4_8,J32_16,0,0,0,0 },     /* e.g. brcl  */	[INSTR_RIL_RI]	  = { 0x0f, R_8,I32_16,0,0,0,0 },      /* e.g. afi   */	[INSTR_RIL_RU]	  = { 0x0f, R_8,U32_16,0,0,0,0 },      /* e.g. alfi  */	[INSTR_RI_RI]	  = { 0x0f, R_8,I16_16,0,0,0,0 },      /* e.g. ahi   */	[INSTR_RI_RP]	  = { 0x0f, R_8,J16_16,0,0,0,0 },      /* e.g. brct  */	[INSTR_RI_RU]	  = { 0x0f, R_8,U16_16,0,0,0,0 },      /* e.g. tml   */	[INSTR_RI_UP]	  = { 0x0f, U4_8,J16_16,0,0,0,0 },     /* e.g. brc   */	[INSTR_RRE_00]	  = { 0xff, 0,0,0,0,0,0 },	       /* e.g. palb  */	[INSTR_RRE_0R]	  = { 0xff, R_28,0,0,0,0,0 },	       /* e.g. tb    */	[INSTR_RRE_AA]	  = { 0xff, A_24,A_28,0,0,0,0 },       /* e.g. cpya  */	[INSTR_RRE_AR]	  = { 0xff, A_24,R_28,0,0,0,0 },       /* e.g. sar   */	[INSTR_RRE_F0]	  = { 0xff, F_24,0,0,0,0,0 },	       /* e.g. sqer  */	[INSTR_RRE_FF]	  = { 0xff, F_24,F_28,0,0,0,0 },       /* e.g. debr  */	[INSTR_RRE_R0]	  = { 0xff, R_24,0,0,0,0,0 },	       /* e.g. ipm   */	[INSTR_RRE_RA]	  = { 0xff, R_24,A_28,0,0,0,0 },       /* e.g. ear   */	[INSTR_RRE_RF]	  = { 0xff, R_24,F_28,0,0,0,0 },       /* e.g. cefbr */	[INSTR_RRE_RR]	  = { 0xff, R_24,R_28,0,0,0,0 },       /* e.g. lura  */	[INSTR_RRE_RR_OPT]= { 0xff, R_24,RO_28,0,0,0,0 },      /* efpc, sfpc */	[INSTR_RRF_F0FF]  = { 0xff, F_16,F_24,F_28,0,0,0 },    /* e.g. madbr */	[INSTR_RRF_FUFF]  = { 0xff, F_24,F_16,F_28,U4_20,0,0 },/* e.g. didbr */	[INSTR_RRF_RURR]  = { 0xff, R_24,R_28,R_16,U4_20,0,0 },/* e.g. .insn */	[INSTR_RRF_R0RR]  = { 0xff, R_24,R_28,R_16,0,0,0 },    /* e.g. idte  */	[INSTR_RRF_U0FF]  = { 0xff, F_24,U4_16,F_28,0,0,0 },   /* e.g. fixr  */	[INSTR_RRF_U0RF]  = { 0xff, R_24,U4_16,F_28,0,0,0 },   /* e.g. cfebr */	[INSTR_RRF_M0RR]  = { 0xff, R_24,R_28,M_16,0,0,0 },    /* e.g. sske  */	[INSTR_RR_FF]	  = { 0xff, F_8,F_12,0,0,0,0 },        /* e.g. adr   */	[INSTR_RR_R0]	  = { 0xff, R_8, 0,0,0,0,0 },	       /* e.g. spm   */	[INSTR_RR_RR]	  = { 0xff, R_8,R_12,0,0,0,0 },        /* e.g. lr    */	[INSTR_RR_U0]	  = { 0xff, U8_8, 0,0,0,0,0 },	       /* e.g. svc   */	[INSTR_RR_UR]	  = { 0xff, U4_8,R_12,0,0,0,0 },       /* e.g. bcr   */	[INSTR_RSE_RRRD]  = { 0xff, R_8,R_12,D_20,B_16,0,0 },  /* e.g. lmh   */	[INSTR_RSE_CCRD]  = { 0xff, C_8,C_12,D_20,B_16,0,0 },  /* e.g. lmh   */	[INSTR_RSE_RURD]  = { 0xff, R_8,U4_12,D_20,B_16,0,0 }, /* e.g. icmh  */	[INSTR_RSL_R0RD]  = { 0xff, R_8,D_20,B_16,0,0,0 },     /* e.g. tp    */	[INSTR_RSI_RRP]	  = { 0xff, R_8,R_12,J16_16,0,0,0 },   /* e.g. brxh  */	[INSTR_RSY_RRRD]  = { 0xff, R_8,R_12,D20_20,B_16,0,0 },/* e.g. stmy  */	[INSTR_RSY_RURD]  = { 0xff, R_8,U4_12,D20_20,B_16,0,0 },							       /* e.g. icmh  */	[INSTR_RSY_AARD]  = { 0xff, A_8,A_12,D20_20,B_16,0,0 },/* e.g. lamy  */	[INSTR_RSY_CCRD]  = { 0xff, C_8,C_12,D20_20,B_16,0,0 },/* e.g. lamy  */	[INSTR_RS_AARD]	  = { 0xff, A_8,A_12,D_20,B_16,0,0 },  /* e.g. lam   */	[INSTR_RS_CCRD]	  = { 0xff, C_8,C_12,D_20,B_16,0,0 },  /* e.g. lctl  */	[INSTR_RS_R0RD]	  = { 0xff, R_8,D_20,B_16,0,0,0 },     /* e.g. sll   */	[INSTR_RS_RRRD]	  = { 0xff, R_8,R_12,D_20,B_16,0,0 },  /* e.g. cs    */	[INSTR_RS_RURD]	  = { 0xff, R_8,U4_12,D_20,B_16,0,0 }, /* e.g. icm   */	[INSTR_RXE_FRRD]  = { 0xff, F_8,D_20,X_12,B_16,0,0 },  /* e.g. axbr  */	[INSTR_RXE_RRRD]  = { 0xff, R_8,D_20,X_12,B_16,0,0 },  /* e.g. lg    */	[INSTR_RXF_FRRDF] = { 0xff, F_32,F_8,D_20,X_12,B_16,0 },							       /* e.g. madb  */	[INSTR_RXY_RRRD]  = { 0xff, R_8,D20_20,X_12,B_16,0,0 },/* e.g. ly    */	[INSTR_RXY_FRRD]  = { 0xff, F_8,D20_20,X_12,B_16,0,0 },/* e.g. ley   */	[INSTR_RX_FRRD]	  = { 0xff, F_8,D_20,X_12,B_16,0,0 },  /* e.g. ae    */	[INSTR_RX_RRRD]	  = { 0xff, R_8,D_20,X_12,B_16,0,0 },  /* e.g. l     */	[INSTR_RX_URRD]	  = { 0xff, U4_8,D_20,X_12,B_16,0,0 }, /* e.g. bc    */	[INSTR_SI_URD]	  = { 0xff, D_20,B_16,U8_8,0,0,0 },    /* e.g. cli   */	[INSTR_SIY_URD]	  = { 0xff, D20_20,B_16,U8_8,0,0,0 },  /* e.g. tmy   */	[INSTR_SSE_RDRD]  = { 0xff, D_20,B_16,D_36,B_32,0,0 }, /* e.g. mvsdk */	[INSTR_SS_L0RDRD] = { 0xff, D_20,L8_8,B_16,D_36,B_32,0 },							       /* e.g. mvc   */	[INSTR_SS_LIRDRD] = { 0xff, D_20,L4_8,B_16,D_36,B_32,U4_12 },							       /* e.g. srp   */	[INSTR_SS_LLRDRD] = { 0xff, D_20,L4_8,B_16,D_36,L4_12,B_32 },							       /* e.g. pack  */	[INSTR_SS_RRRDRD] = { 0xff, D_20,R_8,B_16,D_36,B_32,R_12 },							       /* e.g. mvck  */	[INSTR_SS_RRRDRD2]= { 0xff, R_8,D_20,B_16,R_12,D_36,B_32 },							       /* e.g. plo   */	[INSTR_SS_RRRDRD3]= { 0xff, R_8,R_12,D_20,B_16,D_36,B_32 },							       /* e.g. lmd   */	[INSTR_S_00]	  = { 0xff, 0,0,0,0,0,0 },	       /* e.g. hsch  */	[INSTR_S_RD]	  = { 0xff, D_20,B_16,0,0,0,0 },       /* e.g. lpsw  */	[INSTR_SSF_RRDRD] = { 0x00, D_20,B_16,D_36,B_32,R_8,0 },							       /* e.g. mvcos */};static struct insn opcode[] = {#ifdef CONFIG_64BIT	{ "lmd", 0xef, INSTR_SS_RRRDRD3 },#endif	{ "spm", 0x04, INSTR_RR_R0 },	{ "balr", 0x05, INSTR_RR_RR },	{ "bctr", 0x06, INSTR_RR_RR },	{ "bcr", 0x07, INSTR_RR_UR },	{ "svc", 0x0a, INSTR_RR_U0 },	{ "bsm", 0x0b, INSTR_RR_RR },	{ "bassm", 0x0c, INSTR_RR_RR },	{ "basr", 0x0d, INSTR_RR_RR },	{ "mvcl", 0x0e, INSTR_RR_RR },	{ "clcl", 0x0f, INSTR_RR_RR },	{ "lpr", 0x10, INSTR_RR_RR },	{ "lnr", 0x11, INSTR_RR_RR },	{ "ltr", 0x12, INSTR_RR_RR },	{ "lcr", 0x13, INSTR_RR_RR },	{ "nr", 0x14, INSTR_RR_RR },	{ "clr", 0x15, INSTR_RR_RR },	{ "or", 0x16, INSTR_RR_RR },	{ "xr", 0x17, INSTR_RR_RR },	{ "lr", 0x18, INSTR_RR_RR },	{ "cr", 0x19, INSTR_RR_RR },	{ "ar", 0x1a, INSTR_RR_RR },	{ "sr", 0x1b, INSTR_RR_RR },	{ "mr", 0x1c, INSTR_RR_RR },	{ "dr", 0x1d, INSTR_RR_RR },	{ "alr", 0x1e, INSTR_RR_RR },	{ "slr", 0x1f, INSTR_RR_RR },	{ "lpdr", 0x20, INSTR_RR_FF },	{ "lndr", 0x21, INSTR_RR_FF },	{ "ltdr", 0x22, INSTR_RR_FF },	{ "lcdr", 0x23, INSTR_RR_FF },	{ "hdr", 0x24, INSTR_RR_FF },	{ "ldxr", 0x25, INSTR_RR_FF },	{ "lrdr", 0x25, INSTR_RR_FF },	{ "mxr", 0x26, INSTR_RR_FF },	{ "mxdr", 0x27, INSTR_RR_FF },	{ "ldr", 0x28, INSTR_RR_FF },	{ "cdr", 0x29, INSTR_RR_FF },	{ "adr", 0x2a, INSTR_RR_FF },	{ "sdr", 0x2b, INSTR_RR_FF },	{ "mdr", 0x2c, INSTR_RR_FF },	{ "ddr", 0x2d, INSTR_RR_FF },	{ "awr", 0x2e, INSTR_RR_FF },	{ "swr", 0x2f, INSTR_RR_FF },	{ "lper", 0x30, INSTR_RR_FF },	{ "lner", 0x31, INSTR_RR_FF },	{ "lter", 0x32, INSTR_RR_FF },	{ "lcer", 0x33, INSTR_RR_FF },	{ "her", 0x34, INSTR_RR_FF },	{ "ledr", 0x35, INSTR_RR_FF },	{ "lrer", 0x35, INSTR_RR_FF },	{ "axr", 0x36, INSTR_RR_FF },	{ "sxr", 0x37, INSTR_RR_FF },	{ "ler", 0x38, INSTR_RR_FF },	{ "cer", 0x39, INSTR_RR_FF },	{ "aer", 0x3a, INSTR_RR_FF },	{ "ser", 0x3b, INSTR_RR_FF },	{ "mder", 0x3c, INSTR_RR_FF },	{ "mer", 0x3c, INSTR_RR_FF },	{ "der", 0x3d, INSTR_RR_FF },	{ "aur", 0x3e, INSTR_RR_FF },	{ "sur", 0x3f, INSTR_RR_FF },	{ "sth", 0x40, INSTR_RX_RRRD },	{ "la", 0x41, INSTR_RX_RRRD },	{ "stc", 0x42, INSTR_RX_RRRD },	{ "ic", 0x43, INSTR_RX_RRRD },	{ "ex", 0x44, INSTR_RX_RRRD },	{ "bal", 0x45, INSTR_RX_RRRD },	{ "bct", 0x46, INSTR_RX_RRRD },	{ "bc", 0x47, INSTR_RX_URRD },	{ "lh", 0x48, INSTR_RX_RRRD },	{ "ch", 0x49, INSTR_RX_RRRD },	{ "ah", 0x4a, INSTR_RX_RRRD },	{ "sh", 0x4b, INSTR_RX_RRRD },	{ "mh", 0x4c, INSTR_RX_RRRD },	{ "bas", 0x4d, INSTR_RX_RRRD },	{ "cvd", 0x4e, INSTR_RX_RRRD },	{ "cvb", 0x4f, INSTR_RX_RRRD },	{ "st", 0x50, INSTR_RX_RRRD },	{ "lae", 0x51, INSTR_RX_RRRD },	{ "n", 0x54, INSTR_RX_RRRD },	{ "cl", 0x55, INSTR_RX_RRRD },	{ "o", 0x56, INSTR_RX_RRRD },	{ "x", 0x57, INSTR_RX_RRRD },	{ "l", 0x58, INSTR_RX_RRRD },	{ "c", 0x59, INSTR_RX_RRRD },	{ "a", 0x5a, INSTR_RX_RRRD },	{ "s", 0x5b, INSTR_RX_RRRD },	{ "m", 0x5c, INSTR_RX_RRRD },	{ "d", 0x5d, INSTR_RX_RRRD },	{ "al", 0x5e, INSTR_RX_RRRD },	{ "sl", 0x5f, INSTR_RX_RRRD },	{ "std", 0x60, INSTR_RX_FRRD },	{ "mxd", 0x67, INSTR_RX_FRRD },	{ "ld", 0x68, INSTR_RX_FRRD },	{ "cd", 0x69, INSTR_RX_FRRD },	{ "ad", 0x6a, INSTR_RX_FRRD },	{ "sd", 0x6b, INSTR_RX_FRRD },	{ "md", 0x6c, INSTR_RX_FRRD },	{ "dd", 0x6d, INSTR_RX_FRRD },	{ "aw", 0x6e, INSTR_RX_FRRD },	{ "sw", 0x6f, INSTR_RX_FRRD },	{ "ste", 0x70, INSTR_RX_FRRD },	{ "ms", 0x71, INSTR_RX_RRRD },	{ "le", 0x78, INSTR_RX_FRRD },	{ "ce", 0x79, INSTR_RX_FRRD },	{ "ae", 0x7a, INSTR_RX_FRRD },	{ "se", 0x7b, INSTR_RX_FRRD },	{ "mde", 0x7c, INSTR_RX_FRRD },	{ "me", 0x7c, INSTR_RX_FRRD },	{ "de", 0x7d, INSTR_RX_FRRD },	{ "au", 0x7e, INSTR_RX_FRRD },	{ "su", 0x7f, INSTR_RX_FRRD },	{ "ssm", 0x80, INSTR_S_RD },	{ "lpsw", 0x82, INSTR_S_RD },	{ "diag", 0x83, INSTR_RS_RRRD },	{ "brxh", 0x84, INSTR_RSI_RRP },	{ "brxle", 0x85, INSTR_RSI_RRP },	{ "bxh", 0x86, INSTR_RS_RRRD },	{ "bxle", 0x87, INSTR_RS_RRRD },	{ "srl", 0x88, INSTR_RS_R0RD },	{ "sll", 0x89, INSTR_RS_R0RD },	{ "sra", 0x8a, INSTR_RS_R0RD },	{ "sla", 0x8b, INSTR_RS_R0RD },	{ "srdl", 0x8c, INSTR_RS_R0RD },	{ "sldl", 0x8d, INSTR_RS_R0RD },	{ "srda", 0x8e, INSTR_RS_R0RD },	{ "slda", 0x8f, INSTR_RS_R0RD },	{ "stm", 0x90, INSTR_RS_RRRD },	{ "tm", 0x91, INSTR_SI_URD },	{ "mvi", 0x92, INSTR_SI_URD },	{ "ts", 0x93, INSTR_S_RD },	{ "ni", 0x94, INSTR_SI_URD },	{ "cli", 0x95, INSTR_SI_URD },	{ "oi", 0x96, INSTR_SI_URD },	{ "xi", 0x97, INSTR_SI_URD },	{ "lm", 0x98, INSTR_RS_RRRD },	{ "trace", 0x99, INSTR_RS_RRRD },	{ "lam", 0x9a, INSTR_RS_AARD },	{ "stam", 0x9b, INSTR_RS_AARD },	{ "mvcle", 0xa8, INSTR_RS_RRRD },	{ "clcle", 0xa9, INSTR_RS_RRRD },	{ "stnsm", 0xac, INSTR_SI_URD },	{ "stosm", 0xad, INSTR_SI_URD },	{ "sigp", 0xae, INSTR_RS_RRRD },	{ "mc", 0xaf, INSTR_SI_URD },	{ "lra", 0xb1, INSTR_RX_RRRD },	{ "stctl", 0xb6, INSTR_RS_CCRD },	{ "lctl", 0xb7, INSTR_RS_CCRD },	{ "cs", 0xba, INSTR_RS_RRRD },	{ "cds", 0xbb, INSTR_RS_RRRD },	{ "clm", 0xbd, INSTR_RS_RURD },	{ "stcm", 0xbe, INSTR_RS_RURD },	{ "icm", 0xbf, INSTR_RS_RURD },	{ "mvn", 0xd1, INSTR_SS_L0RDRD },	{ "mvc", 0xd2, INSTR_SS_L0RDRD },	{ "mvz", 0xd3, INSTR_SS_L0RDRD },	{ "nc", 0xd4, INSTR_SS_L0RDRD },	{ "clc", 0xd5, INSTR_SS_L0RDRD },	{ "oc", 0xd6, INSTR_SS_L0RDRD },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -