void test_reg_reg_uses_source_defines_target(void) { assert_uses_r0_defines_r1(reg_reg_insn(INSN_MOV_REG_REG, &r0, &r1)); assert_uses_r0_defines_r1(reg_reg_insn(INSN_SAR_REG_REG, &r0, &r1)); assert_uses_r0_defines_r1(reg_reg_insn(INSN_SHL_REG_REG, &r0, &r1)); assert_uses_r0_defines_r1(reg_reg_insn(INSN_SHR_REG_REG, &r0, &r1)); }
void test_emit_cmp_reg_reg(void) { assert_emit_insn_2(0x39, 0xc3, reg_reg_insn(INSN_CMP_REG_REG, &VAR_EAX, &VAR_EBX)); assert_emit_insn_2(0x39, 0xd8, reg_reg_insn(INSN_CMP_REG_REG, &VAR_EBX, &VAR_EAX)); assert_emit_insn_2(0x39, 0xca, reg_reg_insn(INSN_CMP_REG_REG, &VAR_ECX, &VAR_EDX)); }
void test_emit_or_reg_reg(void) { assert_emit_insn_2(0x0b, 0xc1, reg_reg_insn(INSN_OR_REG_REG, &VAR_ECX, &VAR_EAX)); assert_emit_insn_2(0x0b, 0xd9, reg_reg_insn(INSN_OR_REG_REG, &VAR_ECX, &VAR_EBX)); }
void test_emit_shr_reg_reg(void) { assert_emit_insn_2(0xd3, 0xe8, reg_reg_insn(INSN_SHR_REG_REG, &VAR_ECX, &VAR_EAX)); assert_emit_insn_2(0xd3, 0xeb, reg_reg_insn(INSN_SHR_REG_REG, &VAR_ECX, &VAR_EBX)); }
void test_emit_sar_reg_reg(void) { assert_emit_insn_2(0xd3, 0xf8, reg_reg_insn(INSN_SAR_REG_REG, &VAR_ECX, &VAR_EAX)); assert_emit_insn_2(0xd3, 0xfb, reg_reg_insn(INSN_SAR_REG_REG, &VAR_ECX, &VAR_EBX)); }
void test_emit_shl_reg_reg(void) { assert_emit_insn_2(0xd3, 0xe0, reg_reg_insn(INSN_SHL_REG_REG, &VAR_ECX, &VAR_EAX)); assert_emit_insn_2(0xd3, 0xe3, reg_reg_insn(INSN_SHL_REG_REG, &VAR_ECX, &VAR_EBX)); }
void test_emit_cltd(void) { assert_emit_insn_1(0x99, reg_reg_insn(INSN_CLTD_REG_REG, &VAR_EAX, &VAR_EDX)); }
void test_emit_add_reg_reg(void) { assert_emit_insn_2(0x03, 0xc3, reg_reg_insn(INSN_ADD_REG_REG, &VAR_EBX, &VAR_EAX)); }
void test_emit_movsx_8_reg_reg(void) { assert_emit_insn_3(0x0f, 0xbe, 0xc2, reg_reg_insn(INSN_MOVSX_8_REG_REG, &VAR_EDX, &VAR_EAX)); assert_emit_insn_3(0x0f, 0xbe, 0xcb, reg_reg_insn(INSN_MOVSX_8_REG_REG, &VAR_EBX, &VAR_ECX)); }
void test_emit_mov_reg_reg(void) { assert_emit_insn_2(0x89, 0xd0, reg_reg_insn(INSN_MOV_REG_REG, &VAR_EDX, &VAR_EAX)); assert_emit_insn_2(0x89, 0xd9, reg_reg_insn(INSN_MOV_REG_REG, &VAR_EBX, &VAR_ECX)); }
void test_mul_defines_eax_edx(void) { assert_def_fixed_mask(1, 0, 1, reg_reg_insn(INSN_MUL_REG_EAX, &r2, &r2)); }
void test_cltd_defines_edx_and_eax_and_uses_eax(void) { assert_uses_r0_defines_r0_and_r1(reg_reg_insn(INSN_CLTD_REG_REG, &r0, &r1)); }