232 lines · 4.5 KB · C
RawDownload
#include "java.h"#include "javaisa.h" enum {	XLOAD	= 0x1 << 0,	XSTORE	= 0x1 << 1}; static uchar javatbl[MAXJAVA]; static intopcode(Jinst *j){	return (j->op == Jwide) ? j->u.w.op : j->op;} intisload(Jinst *j){	return javatbl[opcode(j)] & XLOAD;} intisstore(Jinst *j){	return javatbl[opcode(j)] & XSTORE;} static uchar javatbl[MAXJAVA] = {	0,		/* Jnop */	XLOAD,		/* Jaconst_null */	XLOAD,		/* Jiconst_m1 */	XLOAD,		/* Jiconst_0 */	XLOAD,		/* Jiconst_1 */	XLOAD,		/* Jiconst_2 */	XLOAD,		/* Jiconst_3 */	XLOAD,		/* Jiconst_4 */	XLOAD,		/* Jiconst_5 */	XLOAD,		/* Jlconst_0 */	XLOAD,		/* Jlconst_1 */	XLOAD,		/* Jfconst_0 */	XLOAD,		/* Jfconst_1 */	XLOAD,		/* Jfconst_2 */	XLOAD,		/* Jdconst_0 */	XLOAD,		/* Jdconst_1 */	XLOAD,		/* Jbipush */	XLOAD,		/* Jsipush */	XLOAD,		/* Jldc */	XLOAD,		/* Jldc_w */	XLOAD,		/* Jldc2_w */	XLOAD,		/* Jiload */	XLOAD,		/* Jlload */	XLOAD,		/* Jfload */	XLOAD,		/* Jdload */	XLOAD,		/* Jaload */	XLOAD,		/* Jiload_0 */	XLOAD,		/* Jiload_1 */	XLOAD,		/* Jiload_2 */	XLOAD,		/* Jiload_3 */	XLOAD,		/* Jlload_0 */	XLOAD,		/* Jlload_1 */	XLOAD,		/* Jlload_2 */	XLOAD,		/* Jlload_3 */	XLOAD,		/* Jfload_0 */	XLOAD,		/* Jfload_1 */	XLOAD,		/* Jfload_2 */	XLOAD,		/* Jfload_3 */	XLOAD,		/* Jdload_0 */	XLOAD,		/* Jdload_1 */	XLOAD,		/* Jdload_2 */	XLOAD,		/* Jdload_3 */	XLOAD,		/* Jaload_0 */	XLOAD,		/* Jaload_1 */	XLOAD,		/* Jaload_2 */	XLOAD,		/* Jaload_3 */	0,		/* Jiaload */	0,		/* Jlaload */	0,		/* Jfaload */	0,		/* Jdaload */	0,		/* Jaaload */	0,		/* Jbaload */	0,		/* Jcaload */	0,		/* Jsaload */	XSTORE,		/* Jistore */	XSTORE,		/* Jlstore */	XSTORE,		/* Jfstore */	XSTORE,		/* Jdstore */	XSTORE,		/* Jastore */	XSTORE,		/* Jistore_0 */	XSTORE,		/* Jistore_1 */	XSTORE,		/* Jistore_2 */	XSTORE,		/* Jistore_3 */	XSTORE,		/* Jlstore_0 */	XSTORE,		/* Jlstore_1 */	XSTORE,		/* Jlstore_2 */	XSTORE,		/* Jlstore_3 */	XSTORE,		/* Jfstore_0 */	XSTORE,		/* Jfstore_1 */	XSTORE,		/* Jfstore_2 */	XSTORE,		/* Jfstore_3 */	XSTORE,		/* Jdstore_0 */	XSTORE,		/* Jdstore_1 */	XSTORE,		/* Jdstore_2 */	XSTORE,		/* Jdstore_3 */	XSTORE,		/* Jastore_0 */	XSTORE,		/* Jastore_1 */	XSTORE,		/* Jastore_2 */	XSTORE,		/* Jastore_3 */	0,		/* Jiastore */	0,		/* Jlastore */	0,		/* Jfastore */	0,		/* Jdastore */	0,		/* Jaastore */	0,		/* Jbastore */	0,		/* Jcastore */	0,		/* Jsastore */	0,		/* Jpop */	0,		/* Jpop2 */	0,		/* Jdup */	0,		/* Jdup_x1 */	0,		/* Jdup_x2 */	0,		/* Jdup2 */	0,		/* Jdup2_x1 */	0,		/* Jdup2_x2 */	0,		/* Jswap */	0,		/* Jiadd */	0,		/* Jladd */	0,		/* Jfadd */	0,		/* Jdadd */	0,		/* Jisub */	0,		/* Jlsub */	0,		/* Jfsub */	0,		/* Jdsub */	0,		/* Jimul */	0,		/* Jlmul */	0,		/* Jfmul */	0,		/* Jdmul */	0,		/* Jidiv */	0,		/* Jldiv */	0,		/* Jfdiv */	0,		/* Jddiv */	0,		/* Jirem */	0,		/* Jlrem */	0,		/* Jfrem */	0,		/* Jdrem */	0,		/* Jineg */	0,		/* Jlneg */	0,		/* Jfneg */	0,		/* Jdneg */	0,		/* Jishl */	0,		/* Jlshl */	0,		/* Jishr */	0,		/* Jlshr */	0,		/* Jiushr */	0,		/* Jlushr */	0,		/* Jiand */	0,		/* Jland */	0,		/* Jior */	0,		/* Jlor */	0,		/* Jixor */	0,		/* Jlxor */	0,		/* Jiinc */	0,		/* Ji2l */	0,		/* Ji2f */	0,		/* Ji2d */	0,		/* Jl2i */	0,		/* Jl2f */	0,		/* Jl2d */	0,		/* Jf2i */	0,		/* Jf2l */	0,		/* Jf2d */	0,		/* Jd2i */	0,		/* Jd2l */	0,		/* Jd2f */	0,		/* Ji2b */	0,		/* Ji2c */	0,		/* Ji2s */	0,		/* Jlcmp */	0,		/* Jfcmpl */	0,		/* Jfcmpg */	0,		/* Jdcmpl */	0,		/* Jdcmpg */	0,		/* Jifeq */	0,		/* Jifne */	0,		/* Jiflt */	0,		/* Jifge */	0,		/* Jifgt */	0,		/* Jifle */	0,		/* Jif_icmpeq */	0,		/* Jif_icmpne */	0,		/* Jif_icmplt */	0,		/* Jif_icmpge */	0,		/* Jif_icmpgt */	0,		/* Jif_icmple */	0,		/* Jif_acmpeq */	0,		/* Jif_acmpne */	0,		/* Jgoto */	0,		/* Jjsr */	0,		/* Jret */	0,		/* Jtableswitch */	0,		/* Jlookupswitch */	0,		/* Jireturn */	0,		/* Jlreturn */	0,		/* Jfreturn */	0,		/* Jdreturn */	0,		/* Jareturn */	0,		/* Jreturn */	0,		/* Jgetstatic */	0,		/* Jputstatic */	0,		/* Jgetfield */	0,		/* Jputfield */	0,		/* Jinvokevirtual */	0,		/* Jinvokespecial */	0,		/* Jinvokestatic */	0,		/* Jinvokeinterface*/	0,		/* Jxxxunusedxxx */	0,		/* Jnew */	0,		/* Jnewarray */	0,		/* Janewarray */	0,		/* Jarraylength */	0,		/* Jathrow */	0,		/* Jcheckcast */	0,		/* Jinstanceof */	0,		/* Jmonitorenter */	0,		/* Jmonitorexit */	0,		/* Jwide */	0,		/* Jmultianewarray */	0,		/* Jifnull */	0,		/* Jifnonnull */	0,		/* Jgoto_w */	0,		/* Jjsr_w */};