1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Fix encoding of test x86 instruction

This commit is contained in:
Maxime Chevalier-Boisvert 2021-05-11 16:33:28 -04:00 committed by Alan Wu
parent 54fe43b45c
commit 5c2f74fc32
2 changed files with 11 additions and 1 deletions

View file

@ -1664,7 +1664,15 @@ void test(codeblock_t* cb, x86opnd_t rm_opnd, x86opnd_t test_opnd)
else
{
assert (test_opnd.num_bits == rm_opnd.num_bits);
cb_write_rm(cb, false, rm_opnd.num_bits == 64, test_opnd, rm_opnd, 0xFF, 1, 0x85);
if (rm_opnd.num_bits == 8)
{
cb_write_rm(cb, false, false, test_opnd, rm_opnd, 0xFF, 1, 0x84);
}
else
{
cb_write_rm(cb, rm_opnd.num_bits == 16, rm_opnd.num_bits == 64, test_opnd, rm_opnd, 0xFF, 1, 0x85);
}
}
}

View file

@ -323,6 +323,8 @@ void run_tests()
cb_set_pos(cb, 0); sub(cb, RAX, imm_opnd(2)); check_bytes(cb, "4883E802");
// test
cb_set_pos(cb, 0); test(cb, AL, AL); check_bytes(cb, "84C0");
cb_set_pos(cb, 0); test(cb, AX, AX); check_bytes(cb, "6685C0");
cb_set_pos(cb, 0); test(cb, CL, imm_opnd(8)); check_bytes(cb, "F6C108");
cb_set_pos(cb, 0); test(cb, DL, imm_opnd(7)); check_bytes(cb, "F6C207");
cb_set_pos(cb, 0); test(cb, RCX, imm_opnd(8)); check_bytes(cb, "F6C108");