diff options
| author | Ajax <commial@gmail.com> | 2015-11-16 16:11:12 +0100 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2015-11-16 16:11:12 +0100 |
| commit | 7ceb97bcb90ca809f9afea68367c5d34af01d0a7 (patch) | |
| tree | c5c8162e3922e0e6e32bc5a8711e805593a648f5 | |
| parent | 1cc7b090c18ce3ed73ddf79bc478fdb7572cee1f (diff) | |
| download | miasm-7ceb97bcb90ca809f9afea68367c5d34af01d0a7.tar.gz miasm-7ceb97bcb90ca809f9afea68367c5d34af01d0a7.zip | |
x86/arch: add cmpxchg8b and cmpxchg16b in disass and tests
| -rw-r--r-- | miasm2/arch/x86/arch.py | 4 | ||||
| -rw-r--r-- | test/arch/x86/arch.py | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/miasm2/arch/x86/arch.py b/miasm2/arch/x86/arch.py index 2b9b3cb1..74ac0939 100644 --- a/miasm2/arch/x86/arch.py +++ b/miasm2/arch/x86/arch.py @@ -3252,6 +3252,10 @@ addop("cmpsq", [bs8(0xa7), bs_opmode64]) addop("cmpxchg", [bs8(0x0f), bs('1011000'), w8] + rmmod(rmreg, rm_arg_w8), [rm_arg_w8, rmreg]) +addop("cmpxchg8b", [bs8(0x0f), bs8(0xc7), bs_opmode16] + rmmod(d1, rm_arg_m64)) +addop("cmpxchg8b", [bs8(0x0f), bs8(0xc7), bs_opmode32] + rmmod(d1, rm_arg_m64)) +addop("cmpxchg16b", [bs8(0x0f), bs8(0xc7), bs_opmode64] + rmmod(d1, rm_arg_m64)) + # XXX TODO CMPXCHG8/16 addop("comiss", [bs8(0x0f), bs8(0x2f), no_xmm_pref] + diff --git a/test/arch/x86/arch.py b/test/arch/x86/arch.py index 5721d72a..7d6260a2 100644 --- a/test/arch/x86/arch.py +++ b/test/arch/x86/arch.py @@ -832,6 +832,14 @@ reg_tests = [ "0fb000"), (m32, "00000000 CMPXCHG DWORD PTR [EAX], EAX", "0fb100"), + (m16, "00000000 CMPXCHG8B QWORD PTR [SI+0x24]", + "0fc74c24"), + (m32, "00000000 CMPXCHG8B QWORD PTR [ESP+0x8]", + "0fc74c2408"), + (m64, "00000000 CMPXCHG8B QWORD PTR [RSP+0x8]", + "0fc74c2408"), + (m64, "00000000 CMPXCHG16B QWORD PTR [RSP+0x8]", + "480fc74c2408"), (m32, "00000000 CDQ", "99"), |