📄 kaffe.def
字号:
check_stack_int(0); check_stack_long(1); slot_nowriteback(stack(0)); slot_nowriteback2(stack_long(1)); lshr_long(stack_long(1), stack_long(1), stack(0)); pop(1);}define_insn(IAND){ /* * ..., val1, val2 -> ..., val1 & val2 */ trace_jcode (("iand\n")); check_stack_int(0); check_stack_int(1); and_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LAND){ /* * ..., long val1, long val2 -> ..., long val1 & val2 */ trace_jcode (("land\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); and_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(IOR){ /* * ..., val1, val2 -> ..., val1 | val2 */ trace_jcode (("ior\n")); check_stack_int(0); check_stack_int(1); or_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LOR){ /* * ..., long val1, long val2 -> ..., long val1 | val2 */ trace_jcode (("lor\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); or_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(IXOR){ /* * ..., val1, val2 -> ..., val1 ^ val2 */ trace_jcode (("ixor\n")); check_stack_int(0); check_stack_int(1); xor_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LXOR){ /* * ..., long val1, long val2 -> ..., long val1 ^ val2 */ trace_jcode (("lxor\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); xor_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(IINC){ check_pc (0); check_pc (1); idx = (uint8)getpc(0); low = (int8)getpc(1); trace_jcode (("iinc %d %d\n", idx, low)); check_local_int(idx); add_int_const(local(idx), local(idx), low);}define_insn(I2L){ trace_jcode (("i2l\n")); check_stack_int(0); push(1); cvt_int_long(stack_long(0), stack(1));}define_insn(I2F){ trace_jcode (("i2f\n")); check_stack_int(0); cvt_int_float(stack(0), stack(0));}define_insn(I2D){ trace_jcode (("i2d\n")); check_stack_int(0); push(1); cvt_int_double(stack_double(0), stack(1));}define_insn(L2I){ trace_jcode (("l2i\n")); check_stack_long(0); cvt_long_int(stack(1), stack_long(0)); pop(1);}define_insn(L2F){ trace_jcode (("l2f\n")); check_stack_long(0); cvt_long_float(stack(1), stack_long(0)); pop(1);}define_insn(L2D){ trace_jcode (("l2d\n")); check_stack_long(0); cvt_long_double(stack_double(0), stack_long(0));}define_insn(F2I){ trace_jcode (("f2i\n")); check_stack_float(0); cvt_float_int(stack(0), stack(0));}define_insn(F2L){ trace_jcode (("f2l\n")); check_stack_float(0); push(1); cvt_float_long(stack_long(0), stack(1));}define_insn(F2D){ trace_jcode (("f2d\n")); check_stack_float(0); push(1); cvt_float_double(stack_double(0), stack(1));}define_insn(D2I){ trace_jcode (("d2i\n")); check_stack_double(0); cvt_double_int(stack(1), stack_double(0)); pop(1);}define_insn(D2L){ trace_jcode (("d2l\n")); check_stack_double(0); cvt_double_long(stack_long(0), stack_double(0));}define_insn(D2F){ trace_jcode (("d2f\n")); check_stack_double(0); cvt_double_float(stack(1), stack_double(0)); pop(1);}define_insn(INT2BYTE){ trace_jcode (("int2byte\n")); check_stack_int(0); cvt_int_byte(stack(0), rstack(0));}define_insn(INT2CHAR){ trace_jcode (("int2char\n")); check_stack_int(0); cvt_int_char(stack(0), rstack(0));}define_insn(INT2SHORT){ trace_jcode (("int2short\n")); check_stack_int(0); cvt_int_short(stack(0), rstack(0));}define_insn(LCMP){ /* * ..., long val1, long val2 -> ..., result */ trace_jcode (("lcmp\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); lcmp(stack(3), rstack_long(0), rstack_long(2)); pop(3);}define_insn(FCMPL){ /* * ..., float val1, float val2 -> ..., result */ trace_jcode (("fcmpl\n")); check_stack_float(0); check_stack_float(1); cmpl_float(stack(1), stack(1), stack(0)); pop(1);}define_insn(FCMPG){ /* * ..., float val1, float val2 -> ..., result */ trace_jcode (("fcmpg\n")); check_stack_float(0); check_stack_float(1); cmpg_float(stack(1), stack(1), stack(0)); pop(1);}define_insn(DCMPL){ /* * ..., double val1, double val2 -> ..., result */ trace_jcode (("dcmpl\n")); check_stack_double(0); check_stack_double(2); cmpl_double(stack(3), stack_double(2), stack_double(0)); pop(3);}define_insn(DCMPG){ /* * ..., double val1, double val2 -> ..., result */ trace_jcode (("dcmpg\n")); check_stack_double(0); check_stack_double(2); cmpg_double(stack(3), stack_double(2), stack_double(0)); pop(3);}define_insn(IFEQ){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("ifeq %ld\n", (long) (pc + idx) )); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_eq(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IFNE){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("ifne %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_ne(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IFLT){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("iflt %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_lt(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IFGE){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("ifge %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_ge(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IFGT){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("ifgt %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_gt(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IFLE){ check_pcidx (0); check_stack_int(0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("ifle %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); begin_sync(); cbranch_int_const_le(rstack(0), 0, reference_code_label(pc+idx)); pop(1); end_sync();}define_insn(IF_ICMPEQ){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmpeq %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_eq(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ICMPNE){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmpne %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_ne(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ICMPLT){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmplt %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_lt(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ICMPGE){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmpge %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_ge(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ICMPGT){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmpgt %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_gt(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ICMPLE){ check_pcidx (0); check_stack_int(0); check_stack_int(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_icmple %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_int_le(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ACMPEQ){ check_pcidx (0); check_stack_ref(0); check_stack_ref(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_acmpeq %ld\n", (long) (pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_ref_eq(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(IF_ACMPNE){ check_pcidx (0); check_stack_ref(0); check_stack_ref(1); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("if_acmpne %ld\n", (long)(pc + idx))); slot_nowriteback(stack(0)); slot_nowriteback(stack(1)); begin_sync(); cbranch_ref_ne(rstack(1), rstack(0), reference_code_label(pc+idx)); pop(2); end_sync();}define_insn(GOTO){ check_pcidx (0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("goto %ld\n", (long) (pc + idx))); begin_sync(); branch_a(reference_code_label(pc+idx)); end_sync();}define_insn(JSR){ /* * ... -> ..., ret-addr */ check_pcidx (0); idx = (int16)((getpc(0) << 8) | getpc(1)); trace_jcode (("jsr %ld\n", (long) (pc + idx))); push(1); move_label_const(stack(0), reference_code_label(npc)); begin_sync(); branch_a(reference_code_label(pc+idx)); end_sync();}define_insn(RET){ check_pc (0); idx = (uint8)getpc(0); trace_jcode (("ret %d\n", idx)); check_local_ref(idx); begin_sync(); branch_indirect(stored_code_label(local(idx))); end_sync();}define_insn(TABLESWITCH){ /* * ..., index -> ... */ check_stack_int(0); npc = (pc + 1 + 3) & -4; low = (int32)((getcode(npc+4) << 24) | (getcode(npc+5) << 16) | (getcode(npc+6) << 8) | getcode(npc+7)); high = (int32)((getcode(npc+8) << 24) | (getcode(npc+9) << 16) | (getcode(npc+10) << 8) | getcode(npc+11)); npc = npc + 12; trace_jcode (("tableswitch %d %d\n", low, high)); end_sub_block(); cbranch_int_const_lt(stack(0), low, reference_label(TABLESWITCH, 8)); cbranch_int_const_le(stack(0), high, reference_label(TABLESWITCH, 7)); start_sub_block(); set_label(TABLESWITCH, 8); move_int_const(stack(0), low-3); /* Position at default entry */ end_sub_block(); start_sub_block(); set_label(TABLESWITCH, 7); if (low != 0) { start_sub_block(); sub_int_const(stack(0), stack(0), low); end_sub_block(); } lshl_int_const(stack(0), stack(0), switchtable_shift); slot_alloctmp(tmp2); move_label_const(tmp2, reference_table_label(9)); add_ref(stack(0), tmp2, stack(0)); slot_freetmp(tmp2); load_code_ref(stack(0), stack(0)); end_sub_block(); branch_indirect(table_code_label(stack(0))); pop(1);#if defined(TRANSLATOR) { build_code_ref(&getcode(npc-12), pc); /* Default entry */ build_code_ref(&getcode(npc-12), pc); /* Dummy */ build_code_ref(&getcode(npc-12), pc); /* Dummy */ set_label(TABLESWITCH, 9); for (idx = 0; idx < high-low+1; idx++) { build_code_ref(&getcode(npc + (idx << switchtable_shift)), pc); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -