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

📄 jit-alpha.def

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 DEF
📖 第 1 页 / 共 5 页
字号:
/* jit-alpha.def * Alpha instruction definition. * * Copyright (c) 1996, 1997 *	Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  *//* Turn this on for full denormal/NaN/Inf support at the expense of speed.   It is possible that this may be able to be turned off anyway on the   EV5 and higher, as they require no kernel support for such things.  *//* If so, use IMPLVER to detect current AXP Implementation Version:   0 21064 (EV4), 21064A (EV45), 21066A/21068A (LCA45)   1 21164 (EV5), 21164A (EV56), 21164PC (PCA56)   2 21264 (EV6)   Or AMASK bit 9: Support for precise arithmetic trap reporting in   hardware.  The trap PC is the same as the instruction PC after the   traping instruction is executed.   See alpha_have_precise_trap().  Edouard  */#define AXP_FULL_IEEE_FP#include <string.h>#include "classMethod.h"#include "access.h"#include "constpool.h"#include "exception.h"#include "thread.h"#include "gc.h"#include "gtypes.h"#define REG_v0			0#define REG_s0			9#define REG_fp			15#define REG_a0			16#define REG_t9			23#define REG_t10			24#define REG_t11			25#define REG_ra			26#define REG_pv			27#define REG_at			28#define REG_gp			29#define REG_sp			30#define REG_zero		31#define REG_f0			(32+0)#define REG_f2			(32+2)#define REG_fa0			(32+16)#define REG_ft			(32+30)#define REG_fzero		(32+31)#ifdef KAFFE_VMDEBUGstatic const char * const rnames[] = {	"v0",	"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",	"s0", "s1", "s2", "s3", "s4", "s5",	"fp",	"a0", "a1", "a2", "a3", "a4", "a5",	"t8", "t9", "t10", "t11",	"ra",	"pv",	"at",	"gp",	"sp",	"zero",	"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",	"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",	"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",	"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"};#define regname(n)	rnames[n]#define fregname(n)	rnames[n]#endifint *alpha_slot2argoffset;int alpha_nslot2argoffset;alpha_jit_info_t alpha_jit_info;#define alpha_s32_rangecheck(v)	((v) >= -0x80000000L && (v) < 0x80000000L)/* --------------------------------------------------------------------- *//* Instruction formats							 */#define insn_bra(op, ra, disp)						\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| ((((disp) + 4) / 4) & 0x1FFFFF))#define insn_mem(op, ra, rb, off)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((rb) & 0x1F) << 16) | ((off) & 0xFFFF))#define insn_mfc(op, fn, ra, rb)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((rb) & 0x1F) << 16) | ((fn) & 0xFFFF))#define insn_fp(op, fn, ra, rb, rc)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((rb) & 0x1F) << 16) | (((fn) & 0x7FF) << 5)		\		| ((rc) & 0x1F))#define insn_opr(op, fn, ra, rb, rc)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((rb) & 0x1F) << 16) | (((fn) & 0x7F) << 5)		\		| ((rc) & 0x1F))#define insn_oprl(op, fn, ra, lit, rc)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((lit) & 0xFF) << 13) | 0x1000 | (((fn) & 0x7F) << 5)\		| ((rc) & 0x1F))#define insn_mbr(op, fn, ra, rb, extra)					\	LOUT = (((op) << 26) | (((ra) & 0x1F) << 21)			\		| (((rb) & 0x1F) << 16) | (((fn) & 3) << 14)		\		| ((extra) & 0x3FFF))/* --------------------------------------------------------------------- *//* Specific Instructions						 */#ifdef KAFFE_VMDEBUGint jit_debug;#define debug(x)	(jit_debug ? dprintf("%x:\t", CODEPC), dprintf x : 0)#else#define debug(x)	((void)0)#endif#define op_addl(ra, rb, rc)						\	debug(("addl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x00, (ra), (rb), (rc))#define op_addl_i(ra, ib, rc)						\	debug(("addl\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x00, (ra), (ib), (rc))#define op_addq(ra, rb, rc)						\	debug(("addq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x20, (ra), (rb), (rc))#define op_addq_i(ra, ib, rc)						\	debug(("addq\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x20, (ra), (ib), (rc))#define op_adds(ra, rb, rc)						\	debug(("adds\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x080, (ra), (rb), (rc))#define op_adds_su(ra, rb, rc)						\	debug(("adds/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x580, (ra), (rb), (rc))#define op_addt(ra, rb, rc)						\	debug(("addt\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x0A0, (ra), (rb), (rc))#define op_addt_su(ra, rb, rc)						\	debug(("addt/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x5A0, (ra), (rb), (rc))#define op_and(ra, rb, rc)						\	debug(("and\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x11, 0x00, (ra), (rb), (rc))#define op_and_i(ra, ib, rc)						\	debug(("and\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x11, 0x00, (ra), (ib), (rc))#define op_andnot_i(ra, ib, rc)						\	debug(("andnot\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x11, 0x08, (ra), (ib), (rc))#define op_beq(ra, disp)						\	debug(("beq\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x39, (ra), (disp))#define op_bge(ra, disp)						\	debug(("bge\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x3E, (ra), (disp))#define op_bgt(ra, disp)						\	debug(("bgt\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x3F, (ra), (disp))#define op_ble(ra, disp)						\	debug(("ble\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x3B, (ra), (disp))#define op_blt(ra, disp)						\	debug(("blt\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x3A, (ra), (disp))#define op_bne(ra, disp)						\	debug(("bne\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x3D, (ra), (disp))#define op_br(ra, disp)							\	debug(("br\t%s,%+d\n",regname(ra),(disp))),			\	insn_bra(0x30, (ra), (disp))#define op_cmpeq(ra, rb, rc)						\	debug(("cmpeq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x2D, (ra), (rb), (rc))#define op_cmpeq_i(ra, ib, rc)						\	debug(("cmpeq\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x2D, (ra), (ib), (rc))#define op_cmple(ra, rb, rc)						\	debug(("cmple\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x6D, (ra), (rb), (rc))#define op_cmple_i(ra, ib, rc)						\	debug(("cmple\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x6D, (ra), (ib), (rc))#define op_cmplt(ra, rb, rc)						\	debug(("cmplt\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x4D, (ra), (rb), (rc))#define op_cmplt_i(ra, ib, rc)						\	debug(("cmplt\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x4D, (ra), (ib), (rc))#define op_cmpult(ra, rb, rc)						\	debug(("cmpult\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x1D, (ra), (rb), (rc))#define op_cmpult_i(ra, ib, rc)						\	debug(("cmpult\t%s,%d,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x10, 0x1D, (ra), (ib), (rc))#define op_cpysn(ra, rb, rc)						\	debug(("cpysn\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x17, 0x021, (ra), (rb), (rc))#define op_cvtlq(rb, rc)						\	debug(("cvtlq\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x17, 0x010, REG_zero, (rb), (rc))#define op_cvtql(rb, rc)						\	debug(("cvtql\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x17, 0x030, REG_zero, (rb), (rc))#define op_cvtql_sv(rb, rc)						\	debug(("cvtql/sv\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x17, 0x530, REG_zero, (rb), (rc))#define op_cvtqs(rb, rc)						\	debug(("cvtqs\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x0BC, REG_zero, (rb), (rc))#define op_cvtqt(rb, rc)						\	debug(("cvtqt\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x0BE, REG_zero, (rb), (rc))#define op_cvtst(rb, rc)						\	debug(("cvtst\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x2AC, REG_zero, (rb), (rc))#define op_cvtst_s(rb, rc)						\	debug(("cvtst/s\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x6AC, REG_zero, (rb), (rc))#define op_cvttq_c(rb, rc)						\	debug(("cvttq/c\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x02F, REG_zero, (rb), (rc))#define op_cvttq_svc(rb, rc)						\	debug(("cvttq/svc\t%s,%s\n",fregname(rb),fregname(rc))),	\	insn_fp(0x16, 0x52F, REG_zero, (rb), (rc))#define op_cvtts(rb, rc)						\	debug(("cvtts\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x0AC, REG_zero, (rb), (rc))#define op_cvtts_su(rb, rc)						\	debug(("cvtts/su\t%s,%s\n",fregname(rb),fregname(rc))),		\	insn_fp(0x16, 0x5AC, REG_zero, (rb), (rc))#define op_divs(ra, rb, rc)						\	debug(("divs\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x083, (ra), (rb), (rc))#define op_divs_su(ra, rb, rc)						\	debug(("divs/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x583, (ra), (rb), (rc))#define op_divt(ra, rb, rc)						\	debug(("divt\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x0A3, (ra), (rb), (rc))#define op_divt_su(ra, rb, rc)						\	debug(("divt/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x5A3, (ra), (rb), (rc))#define op_extbl(ra, rb, rc)						\	debug(("extbl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x06, (ra), (rb), (rc))#define op_extwl(ra, rb, rc)						\	debug(("extwl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x16, (ra), (rb), (rc))#define op_extqh(ra, rb, rc)						\	debug(("extqh\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x7A, (ra), (rb), (rc))#define op_fmov(ra, rb)							\	debug(("fmov\t%s,%s\n",fregname(ra),fregname(rb))),		\	insn_fp(0x17, 0x020, (ra), (ra), (rb))#define op_insbl(ra, rb, rc)						\	debug(("insbl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x0B, (ra), (rb), (rc))#define op_inswl(ra, rb, rc)						\	debug(("inswl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x1B, (ra), (rb), (rc))#define op_jmp(ra, rb, hint)						\	debug(("jmp\t%s,(%s),%+d\n",regname(ra),regname(rb),(hint))),	\	insn_mbr(0x1A, 0, (ra), (rb), (hint))#define op_jsr(ra, rb, hint)						\	debug(("jsr\t%s,(%s),%+d\n",regname(ra),regname(rb),(hint))),	\	insn_mbr(0x1A, 1, (ra), (rb), (hint))#define op_lda(ra, rb, off)						\	debug(("lda\t%s,%hd(%s)\n",regname(ra),(short)(off),regname(rb))), \	insn_mem(0x08, (ra), (rb), (off))#define op_ldah(ra, rb, off)						\	debug(("ldah\t%s,%hd(%s)\n",regname(ra),(short)(off),regname(rb))), \	insn_mem(0x09, (ra), (rb), (off))#define op_ldl(ra, rb, off)						\	debug(("ldl\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x28, (ra), (rb), (off))#define op_ldq(ra, rb, off)						\	debug(("ldq\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x29, (ra), (rb), (off))#define op_ldq_u(ra, rb, off)						\	debug(("ldq_u\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x0B, (ra), (rb), (off))#define op_lds(ra, rb, off)						\	debug(("lds\t%s,%hd(%s)\n",fregname(ra),(off),regname(rb))),	\	insn_mem(0x22, (ra), (rb), (off))#define op_ldt(ra, rb, off)						\	debug(("ldt\t%s,%hd(%s)\n",fregname(ra),(off),regname(rb))),	\	insn_mem(0x23, (ra), (rb), (off))#define op_mov(ra, rb)							\	debug(("mov\t%s,%s\n",regname(ra),regname(rb))),		\	insn_opr(0x11, 0x20, (ra), (ra), (rb))#define op_mskbl(ra, rb, rc)						\	debug(("mskbl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x02, (ra), (rb), (rc))#define op_mskwl(ra, rb, rc)						\	debug(("mskwl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x12, (ra), (rb), (rc))#define op_mull(ra, rb, rc)						\	debug(("mull\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x13, 0x00, (ra), (rb), (rc))#define op_mull_i(ra, ib, rc)						\	debug(("mull\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x13, 0x00, (ra), (ib), (rc))#define op_mulq(ra, rb, rc)						\	debug(("mulq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x13, 0x20, (ra), (rb), (rc))#define op_mulq_i(ra, ib, rc)						\	debug(("mulq\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_opr(0x13, 0x20, (ra), (ib), (rc))#define op_muls(ra, rb, rc)						\	debug(("muls\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x082, (ra), (rb), (rc))#define op_muls_su(ra, rb, rc)						\	debug(("muls/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x582, (ra), (rb), (rc))#define op_mult(ra, rb, rc)						\	debug(("mult\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x0A2, (ra), (rb), (rc))#define op_mult_su(ra, rb, rc)						\	debug(("mult/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x5A2, (ra), (rb), (rc))#define op_or(ra, rb, rc)						\	debug(("or\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))),	\	insn_opr(0x11, 0x20, (ra), (rb), (rc))#define op_ret(ra, rb, code)						\	debug(("ret\t%s,(%s),%d\n",regname(ra),regname(rb),(code))),	\	insn_mbr(0x1A, 2, (ra), (rb), (code))#define op_s4addl(ra, rb, rc)						\	debug(("s4addl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x02, (ra), (rb), (rc))#define op_s4addq(ra, rb, rc)						\	debug(("s4addq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x22, (ra), (rb), (rc))#define op_s4subl(ra, rb, rc)						\	debug(("s4subl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x0B, (ra), (rb), (rc))#define op_s4subq(ra, rb, rc)						\	debug(("s4subq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x2B, (ra), (rb), (rc))#define op_s8addl(ra, rb, rc)						\	debug(("s8addl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x12, (ra), (rb), (rc))#define op_s8addq(ra, rb, rc)						\	debug(("s8addq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x32, (ra), (rb), (rc))#define op_s8subl(ra, rb, rc)						\	debug(("s8subl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x1B, (ra), (rb), (rc))#define op_s8subq(ra, rb, rc)						\	debug(("s8subq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x10, 0x3B, (ra), (rb), (rc))#define op_sll(ra, rb, rc)						\	debug(("sll\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x39, (ra), (rb), (rc))#define op_sll_i(ra, ib, rc)						\	debug(("sll\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x12, 0x39, (ra), (ib), (rc))#define op_sra(ra, rb, rc)						\	debug(("sra\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x12, 0x3C, (ra), (rb), (rc))#define op_sra_i(ra, ib, rc)						\	debug(("sra\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x12, 0x3C, (ra), (ib), (rc))#define op_srl(ra, rb, rc)						\	debug(("srl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))),	\	insn_opr(0x12, 0x34, (ra), (rb), (rc))#define op_srl_i(ra, ib, rc)						\	debug(("srl\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x12, 0x34, (ra), (ib), (rc))#define op_stl(ra, rb, off)						\	debug(("stl\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x2C, (ra), (rb), (off))#define op_stq(ra, rb, off)						\	debug(("stq\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x2D, (ra), (rb), (off))#define op_stq_u(ra, rb, off)						\	debug(("stq_u\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x0F, (ra), (rb), (off))#define op_sts(ra, rb, off)						\	debug(("sts\t%s,%hd(%s)\n",fregname(ra),(off),regname(rb))),	\	insn_mem(0x26, (ra), (rb), (off))#define op_stt(ra, rb, off)						\	debug(("stt\t%s,%hd(%s)\n",fregname(ra),(off),regname(rb))),	\	insn_mem(0x27, (ra), (rb), (off))#define op_subl(ra, rb, rc)						\	debug(("subl\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))),\	insn_opr(0x10, 0x09, (ra), (rb), (rc))#define op_subl_i(ra, ib, rc)						\	debug(("subl\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x10, 0x09, (ra), (ib), (rc))#define op_subq(ra, rb, rc)						\	debug(("subq\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))),\	insn_opr(0x10, 0x29, (ra), (rb), (rc))#define op_subq_i(ra, ib, rc)						\	debug(("subq\t%s,%d,%s\n",regname(ra),(ib),regname(rc))),	\	insn_oprl(0x10, 0x29, (ra), (ib), (rc))#define op_subs(ra, rb, rc)						\	debug(("subs\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x081, (ra), (rb), (rc))#define op_subs_su(ra, rb, rc)						\	debug(("subs/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x581, (ra), (rb), (rc))#define op_subt(ra, rb, rc)						\	debug(("subt\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))), \	insn_fp(0x16, 0x0A1, (ra), (rb), (rc))#define op_subt_su(ra, rb, rc)						\	debug(("subt/su\t%s,%s,%s\n",fregname(ra),fregname(rb),fregname(rc))),\	insn_fp(0x16, 0x5A1, (ra), (rb), (rc))#define op_trapb()							\	debug(("trapb\n")),						\	insn_mfc(0x18, 0x0000, 0, 0)#define op_unop()							\	debug(("unop\n")),						\	insn_mem(0x0B, REG_zero, REG_zero, 0)#define op_xor(ra, rb, rc)						\	debug(("xor\t%s,%s,%s\n",regname(ra),regname(rb),regname(rc))), \	insn_opr(0x11, 0x40, (ra), (rb), (rc))#define op_zapnot_i(ra, ib, rc)						\	debug(("zapnot\t%s,%#x,%s\n",regname(ra),(unsigned char)(ib),regname(rc))), \	insn_oprl(0x12, 0x31, (ra), (ib), (rc))/* The Byte-Word instruction extension present as of the EV56.  */#define op_ldbu(ra, rb, off)						\	debug(("ldbu\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\	insn_mem(0x0A, (ra), (rb), (off))#define op_ldwu(ra, rb, off)						\	debug(("ldwu\t%s,%hd(%s)\n",regname(ra),(off),regname(rb))),	\

⌨️ 快捷键说明

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