📄 kaffe.def
字号:
/* * ..., array ref, index, val -> ... */ trace_jcode (("iastore\n")); check_stack_int(0); check_stack_int(1); check_stack_intarray(2); check_null(IASTORE, rstack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); store_offset_scaled_int(rstack(2), rstack(1), object_array_offset, rstack(0)); pop(3);}define_insn(LASTORE){ /* * ..., array ref, index, long val -> ... */ trace_jcode (("lastore\n")); check_stack_int(0); check_stack_int(1); check_stack_longarray(2); check_null(LASTORE, stack(3), 34); /* Check we are within the array bounds */ check_array_index(rstack(3), rstack(2)); store_offset_scaled_long(stack(3), stack(2), object_array_offset, stack_long(0)); pop(4);}define_insn(FASTORE){ /* * ..., array ref, index, float val -> ... */ trace_jcode (("fastore\n")); check_stack_int(0); check_stack_int(1); check_stack_floatarray(2); check_null(FASTORE, stack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); store_offset_scaled_float(stack(2), stack(1), object_array_offset, stack(0)); pop(3);}define_insn(DASTORE){ /* * ..., array ref, index, double val -> ... */ trace_jcode (("dastore\n")); check_stack_int(0); check_stack_int(1); check_stack_doublearray(2); check_null(DASTORE, stack(3), 34); /* Check we are within the array bounds */ check_array_index(rstack(3), rstack(2)); store_offset_scaled_double(stack(3), stack(2), object_array_offset, stack_double(0)); pop(4);}define_insn(AASTORE){ /* * ..., array ref, index, val -> ... */ trace_jcode (("aastore\n")); check_stack_int(0); check_stack_int(1); check_stack_refarray(2); check_null(AASTORE, rstack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); check_array_store(rstack(2), rstack(0)); SOFT_ADDREFERENCE(rstack(2), rstack(0)); store_offset_scaled_ref(rstack(2), rstack(1), object_array_offset, rstack(0)); pop(3);}define_insn(BASTORE){ /* * ..., array ref, index, byte value -> ... */ trace_jcode (("bastore\n")); check_stack_int(0); check_stack_int(1); check_stack_bytearray(2); check_null(BASTORE, rstack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); store_offset_scaled_byte(rstack(2), rstack(1), object_array_offset, rstack(0)); pop(3);}define_insn(CASTORE){ /* * ..., array ref, index, char value -> ... */ trace_jcode (("castore\n")); check_stack_int(0); check_stack_int(1); check_stack_chararray(2); check_null(CASTORE, rstack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); store_offset_scaled_char(rstack(2), rstack(1), object_array_offset, rstack(0)); pop(3);}define_insn(SASTORE){ /* * ..., array ref, index, short value -> ... */ trace_jcode (("sastore\n")); check_stack_int(0); check_stack_int(1); check_stack_shortarray(2); check_null(SASTORE, rstack(2), 34); /* Check we are within the array bounds */ check_array_index(rstack(2), rstack(1)); store_offset_scaled_short(rstack(2), rstack(1), object_array_offset, rstack(0)); pop(3);}define_insn(POP){ /* * ..., slot -> ... */ trace_jcode (("pop\n")); pop(1);}define_insn(POP2){ /* * ..., slot, slot -> ... */ trace_jcode (("pop2\n")); pop(2);}define_insn(DUP){ trace_jcode (("dup\n")); push(1); move_any(stack(0), stack(1));}define_insn(DUP_X1){ trace_jcode (("dup_x1\n")); push(1); move_any(stack(0), stack(1)); move_any(stack(1), stack(2)); move_any(stack(2), stack(0));}define_insn(DUP_X2){ trace_jcode (("dup_x2\n")); push(1); move_any(stack(0), stack(1)); move_any(stack(1), stack(2)); move_any(stack(2), stack(3)); move_any(stack(3), stack(0));}define_insn(DUP2){ trace_jcode (("dup2\n")); push(2); move_any(stack(0), stack(2)); move_any(stack(1), stack(3));}define_insn(DUP2_X1){ trace_jcode (("dup2_x1\n")); push(2); move_any(stack(0), stack(2)); move_any(stack(1), stack(3)); move_any(stack(2), stack(4)); move_any(stack(3), stack(0)); move_any(stack(4), stack(1));}define_insn(DUP2_X2){ trace_jcode (("dup2_x2\n")); push(2); move_any(stack(0), stack(2)); move_any(stack(1), stack(3)); move_any(stack(2), stack(4)); move_any(stack(3), stack(5)); move_any(stack(4), stack(0)); move_any(stack(5), stack(1));}define_insn(SWAP){ /* * ..., val1, val2 -> ..., val2, val1 */ trace_jcode (("swap\n")); swap_any(stack(0), stack(1));}define_insn(IADD){ /* * ..., val1, val2 -> ..., val1+val2 */ trace_jcode (("iadd\n")); check_stack_int(0); check_stack_int(1); add_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LADD){ /* * ..., long val1, long val2 -> ..., long val1+val2 */ trace_jcode (("ladd\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); add_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(FADD){ /* * ..., val1, val2 -> ..., val1+val2 */ trace_jcode (("fadd\n")); check_stack_float(0); check_stack_float(1); add_float(stack_float(1), rstack_float(1), rstack_float(0)); pop(1);}define_insn(DADD){ /* * ..., double val1, long val2 -> ..., double val1+val2 */ trace_jcode (("dadd\n")); check_stack_double(0); check_stack_double(2); add_double(stack_double(2), rstack_double(2), rstack_double(0)); pop(2);}define_insn(ISUB){ /* * ..., val1, val2 -> ..., val1-val2 */ trace_jcode (("isub\n")); check_stack_int(0); check_stack_int(1); sub_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LSUB){ /* * ..., long val1, long val2 -> ..., long val1-val2 */ trace_jcode (("lsub\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); sub_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(FSUB){ /* * ..., val1, val2 -> ..., val1-val2 */ trace_jcode (("fsub\n")); check_stack_float(0); check_stack_float(1); sub_float(stack_float(1), rstack_float(1), rstack_float(0)); pop(1);}define_insn(DSUB){ /* * ..., double val1, long val2 -> ..., double val1-val2 */ trace_jcode (("dsub\n")); check_stack_double(0); check_stack_double(2); sub_double(stack_double(2), rstack_double(2), rstack_double(0)); pop(2);}define_insn(IMUL){ /* * ..., val1, val2 -> ..., val1*val2 */ trace_jcode (("imul\n")); check_stack_int(0); check_stack_int(1); mul_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LMUL){ /* * ..., long val1, long val2 -> ..., long val1*val2 */ trace_jcode (("lmul\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); mul_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(FMUL){ /* * ..., val1, val2 -> ..., val1*val2 */ trace_jcode (("fmul\n")); check_stack_float(0); check_stack_float(1); mul_float(stack_float(1), rstack_float(1), rstack_float(0)); pop(1);}define_insn(DMUL){ /* * ..., double val1, long val2 -> ..., double val1*val2 */ trace_jcode (("dmul\n")); check_stack_double(0); check_stack_double(2); mul_double(stack_double(2), rstack_double(2), rstack_double(0)); pop(2);}define_insn(IDIV){ /* * ..., val1, val2 -> ..., val1/val2 */ trace_jcode (("idiv\n")); check_stack_int(0); check_stack_int(1); check_div(IDIV, rstack(0), 1); div_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LDIV){ /* * ..., long val1, long val2 -> ..., long val1/val2 */ trace_jcode (("ldiv\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); check_div_long(LDIV, rstack_long(0), 1); div_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(FDIV){ /* * ..., val1, val2 -> ..., val1/val2 */ trace_jcode (("fdiv\n")); check_stack_float(0); check_stack_float(1); div_float(stack_float(1), rstack_float(1), rstack_float(0)); pop(1);}define_insn(DDIV){ /* * ..., val1, val2 -> ..., val1/val2 */ trace_jcode (("ddiv\n")); check_stack_double(0); check_stack_double(2); div_double(stack_double(2), rstack_double(2), rstack_double(0)); pop(2);}define_insn(IREM){ /* * ..., val1, val2 -> ..., val1%val2 */ trace_jcode (("irem\n")); check_stack_int(0); check_stack_int(1); check_div(IREM, rstack(0), 1); rem_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LREM){ /* * ..., long val1, long val2 -> ..., long val1%val2 */ trace_jcode (("lrem\n")); check_stack_long(0); check_stack_long(2); slot_nowriteback2(stack_long(0)); slot_nowriteback2(stack_long(2)); check_div_long(LREM, rstack_long(0), 1); rem_long(stack_long(2), rstack_long(2), rstack_long(0)); pop(2);}define_insn(FREM){ /* * ..., val1, val2 -> ..., val1%val2 */ trace_jcode (("frem\n")); check_stack_float(0); check_stack_float(1); rem_float(stack_float(1), rstack_float(1), rstack_float(0)); pop(1);}define_insn(DREM){ /* * ..., val1, val2 -> ..., val1%val2 */ trace_jcode (("drem\n")); check_stack_double(0); check_stack_double(2); rem_double(stack_double(2), rstack_double(2), rstack_double(0)); pop(2);}define_insn(INEG){ trace_jcode (("ineg\n")); check_stack_int(0); neg_int(stack(0), rstack(0));}define_insn(LNEG){ trace_jcode (("lneg\n")); check_stack_long(0); slot_nowriteback2(stack_long(0)); neg_long(stack_long(0), rstack_long(0));}define_insn(FNEG){ trace_jcode (("fneg\n")); check_stack_float(0); neg_float(stack_float(0), rstack_float(0));}define_insn(DNEG){ trace_jcode (("dneg\n")); check_stack_double(0); neg_double(stack_double(0), rstack_double(0));}define_insn(ISHL){ /* * ..., val1, val2 -> ... val1 << val2 */ trace_jcode (("ishl\n")); check_stack_int(0); check_stack_int(1); lshl_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LSHL){ /* * ..., long val1, val2 -> ... long val1 << val2 */ trace_jcode (("lshl\n")); check_stack_int(0); check_stack_long(1); slot_nowriteback(stack(0)); slot_nowriteback2(stack_long(1)); lshl_long(stack_long(1), stack_long(1), stack(0)); pop(1);}define_insn(ISHR){ /* * ..., val1, val2 -> ... val1 >> val2 */ trace_jcode (("ishr\n")); check_stack_int(0); check_stack_int(1); ashr_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LSHR){ /* * ..., long val1, val2 -> ... long val1 >> val2 */ trace_jcode (("lshr\n")); check_stack_int(0); check_stack_long(1); slot_nowriteback(stack(0)); slot_nowriteback2(stack_long(1)); ashr_long(stack_long(1), stack_long(1), stack(0)); pop(1);}define_insn(IUSHR){ /* * ..., val1, val2 -> ... val1 >> val2 */ trace_jcode (("iushr\n")); check_stack_int(0); check_stack_int(1); lshr_int(stack(1), rstack(1), rstack(0)); pop(1);}define_insn(LUSHR){ /* * ..., long val1, val2 -> ... long val1 >> val2 */ trace_jcode (("lushr\n"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -