void test_emit_push_reg(void) { assert_emit_insn_1(0x50, reg_insn(INSN_PUSH_REG, &VAR_EAX)); assert_emit_insn_1(0x53, reg_insn(INSN_PUSH_REG, &VAR_EBX)); assert_emit_insn_1(0x51, reg_insn(INSN_PUSH_REG, &VAR_ECX)); assert_emit_insn_1(0x52, reg_insn(INSN_PUSH_REG, &VAR_EDX)); assert_emit_insn_1(0x55, reg_insn(INSN_PUSH_REG, &VAR_EBP)); assert_emit_insn_1(0x54, reg_insn(INSN_PUSH_REG, &VAR_ESP)); }
void test_emit_neg_reg(void) { assert_emit_insn_2(0xf7, 0xd8, reg_insn(INSN_NEG_REG, &VAR_EAX)); assert_emit_insn_2(0xf7, 0xdb, reg_insn(INSN_NEG_REG, &VAR_EBX)); }
void test_emit_indirect_call(void) { assert_emit_insn_2(0xff, 0x10, reg_insn(INSN_CALL_REG, &VAR_EAX)); assert_emit_insn_2(0xff, 0x13, reg_insn(INSN_CALL_REG, &VAR_EBX)); assert_emit_insn_2(0xff, 0x11, reg_insn(INSN_CALL_REG, &VAR_ECX)); }
void test_push_reg_uses_operand(void) { assert_uses_r0(reg_insn(INSN_PUSH_REG, &r0)); }
void test_neg_reg_uses_and_defines_operand(void) { assert_uses_r0_defines_r0(reg_insn(INSN_NEG_REG, &r0)); }
void test_call_defines_caller_saved(void) { assert_defines_caller_saved(reg_insn(INSN_CALL_REG, &r0)); assert_defines_caller_saved(rel_insn(INSN_CALL_REL, 0x12345678)); }
void test_call_reg_uses_operand(void) { assert_uses_r0(reg_insn(INSN_CALL_REG, &r0)); }