diff options
| author | serpilliere <serpilliere@users.noreply.github.com> | 2024-04-28 15:08:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-28 15:08:35 +0200 |
| commit | 90dc1671b59077ee27c3d44d9d536d6659eb3bbe (patch) | |
| tree | deea2838325576f75884556d3e863a7ad3989e16 | |
| parent | b9ec175bc9bb2ed21f0835a81fb1b66e7a651759 (diff) | |
| parent | c5d4231ead7f3fcd9d61f1a4c920806314f3878b (diff) | |
| download | focaccia-miasm-90dc1671b59077ee27c3d44d9d536d6659eb3bbe.tar.gz focaccia-miasm-90dc1671b59077ee27c3d44d9d536d6659eb3bbe.zip | |
Merge pull request #1486 from serpilliere/fix_aarch64_cmp
Fix add/sub aarch64
| -rw-r--r-- | miasm/arch/aarch64/arch.py | 9 | ||||
| -rw-r--r-- | test/arch/aarch64/arch.py | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/miasm/arch/aarch64/arch.py b/miasm/arch/aarch64/arch.py index 0ade16bf..c642d201 100644 --- a/miasm/arch/aarch64/arch.py +++ b/miasm/arch/aarch64/arch.py @@ -1909,6 +1909,10 @@ adsu_name = {'ADD': 0, 'SUB': 1} bs_adsu_name = bs_name(l=1, name=adsu_name) +adsus_name = {'ADDS': 0, 'SUBS': 1} +bs_adsus_name = bs_name(l=1, name=adsus_name) + + offs19 = bs(l=19, cls=(aarch64_offs,), fname='off') offs19pc = bs(l=19, cls=(aarch64_offs_pc,), fname='off') @@ -1939,8 +1943,9 @@ aarch64op("CMN", [sf, bs('0'), bs('1'), bs('01011'), shift, bs('0'), rm_sft, imm aarch64op("cmp", [sf, bs('1'), bs('1'), bs('01011'), shift, bs('0'), rm_sft, imm6, rn, bs('11111')], [rn, rm_sft], alias=True) # add/sub (reg ext) -aarch64op("addsub", [sf, bs_adsu_name, modf, bs('01011'), bs('00'), bs('1'), rm_ext, option, imm3, rn, rd], [rd, rn, rm_ext]) -#aarch64op("cmp", [sf, bs('1'), bs('1'), bs('01011'), bs('00'), bs('1'), rm_ext, option, imm3, rn, bs('11111')], [rn, rm_ext], alias=True) +aarch64op("addsub", [sf, bs_adsu_name, bs('0'), bs('01011'), bs('00'), bs('1'), rm_ext, option, imm3, rn, rd], [rd, rn, rm_ext]) +aarch64op("addssubs", [sf, bs_adsus_name, bs('1'), bs('01011'), bs('00'), bs('1'), rm_ext, option, imm3, rn, rd_nosp], [rd_nosp, rn, rm_ext]) +aarch64op("cmp", [sf, bs('1'), bs('1'), bs('01011'), bs('00'), bs('1'), rm_ext, option, imm3, rn, bs('11111')], [rn, rm_ext], alias=True) aarch64op("neg", [sf, bs('1'), modf, bs('01011'), shift, bs('0'), rm_sft, imm6, bs('11111'), rd], [rd, rm_sft], alias=True) diff --git a/test/arch/aarch64/arch.py b/test/arch/aarch64/arch.py index 57ec9b14..4156e054 100644 --- a/test/arch/aarch64/arch.py +++ b/test/arch/aarch64/arch.py @@ -67,6 +67,9 @@ reg_tests_aarch64 = [ ("0000D5AC NEG W6, W6", "E603064B"), + ("XXXXXXXX CMP W11, W12 UXTB 0x0", + "7F012C6B"), + ("004028B8 CMP X0, XZR", "1F001FEB"), |