rizin/test/db/cmd/cmd_ao
Rot127 1018286648
[PPC/ARM] Update to Capstone v6/auto-sync (#3648)
ARM
- Updated ARM identifiers and API changes.
- Fixed shift amounts to be always decimal.
- Fixed incorrect usages of memory disponents.
- Fixed restoring of condition codes.
- Updated IDs for new ones.
- Fixed 8-byte stores.
- Added flag checking for MOV with shifts.
Capstone Integration
- Removed capstone-auto-sync subproject and replaced with next.
- Checked for NEON features.
- Used https://github.com/capstone-engine/capstone/pull/2122 for better system operand support.
- Distinguished between 32 and 64-bit cc checks.
- Checked for CS API version >5.
- Checked for CS_NEXT_VERSION instead of CS_API_MAJOR.
- Fixed VSTn and VLDn instructions to use corrected memory operands.
- Excluded multiple instruction aliases that are no longer valid IDs.
- Used CS_NEXT_VERSION as include guard.
- Added CS v6 include guards.
- Added CS v6 support to branch conditions for Rzil.
- Added more CSv6 guards.
PPC
- Fixed: Compare instructions do not use the branch predicate.
- Fixed conditional and CTR checks.
- Fixed MTSPR and MFSPR instructions.
- Excluded more branch aliases no longer present in v6 from switch cases.
- Fixed incorrectly assigned variables.
- Fixed condition checks for branches.
- Used ITE for condition checks, to prevent unnecessary reads of CTR or CR.
- Fixed rzil tests with new semantics using register 0.
- Updated include guards for Capstone versions to use CS_NEXT_VERSION.
- Initialized spr_name to prevent uninitialized use.
- Used mem.offset register for CSv6.
- Always used real operand details.
- Used mem operand for DCBZ.
- Fixed tests that are semantically identical.
- Handled LI LIS alias.
- Fixed rzil tests (with simplified semantics).
- Fixed branch alias with new cond test method.
- Handled clrl. alias.
- Handled SL/SR alias.
- Fixed conditional branches in ESIL.
- Fixed possible multiplication result overflow.
- Added RZ_NONNULL.
- Added 0 register.
- Handled LIS alias.
- Fixed: Print crX reg name in CS v6.
- Handled all general branch instructions into a single case statement.
- Fixed no semantic issues in tests.
- Added newly discovered calls.
- Moved direction check to inline function.
- Added link of root cause for broken test.
- Added QPX support.
- Set Capstone next branch to latest commit.
- Fixed uninitialized warning.
- Set CS next branch to newest commit.
2023-10-18 10:36:25 +08:00

144 lines
2.8 KiB
Text

NAME=ao_aoj
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
wx c745f400000000
ao
aoj~{}
EOF
EXPECT=<<EOF
address: 0x0
opcode: mov dword [rbp - 0xc], 0
esilcost: 12
disasm: mov dword [rbp - 0xc], 0
pseudo: dword [rbp - 0xc] = 0
mnemonic: mov
description: moves data from src to dst
mask: ffffffffffffff
prefix: 0
id: 460
bytes: c745f400000000
val: 0x00000000
disp: 0xfffffffffffffff4
refptr: 4
size: 7
sign: false
type: mov
cycles: 1
esil: 0,0xc,rbp,-,=[4]
rzil: (storew 0 (+ (var rbp) (bv 64 0xfffffffffffffff4)) (bv 32 0x0))
direction: write
family: cpu
stackop: set
stackptr: 8
[
{
"opcode": "mov dword [rbp - 0xc], 0",
"disasm": "mov dword [rbp - 0xc], 0",
"pseudo": "dword [rbp - 0xc] = 0",
"description": "moves data from src to dst",
"mnemonic": "mov",
"mask": "ffffffffffffff",
"esil": "0,0xc,rbp,-,=[4]",
"rzil": {
"opcode": "storew",
"mem": 0,
"key": {
"opcode": "+",
"x": {
"opcode": "var",
"value": "rbp"
},
"y": {
"opcode": "bitv",
"bits": "0xfffffffffffffff4",
"len": 64
}
},
"value": {
"opcode": "bitv",
"bits": "0x0",
"len": 32
}
},
"sign": false,
"prefix": 0,
"id": 460,
"opex": {
"operands": [
{
"size": 4,
"rw": 2,
"type": "mem",
"base": "rbp",
"scale": 1,
"disp": -12
},
{
"size": 4,
"rw": 0,
"type": "imm",
"value": 0
}
],
"modrm": true,
"disp": -12
},
"addr": 0,
"bytes": "c745f400000000",
"val": 0,
"disp": 18446744073709551604,
"size": 7,
"type": "mov",
"esilcost": 12,
"scale": 0,
"refptr": 4,
"cycles": 1,
"failcycles": 0,
"delay": 0,
"stack": "set",
"stackptr": 8,
"family": "cpu"
}
]
EOF
RUN
NAME=pimm/cimm
FILE==
CMDS=<<EOF
e asm.arch=arm
e asm.bits=32
e asm.cpu=cortexA8
wx 2f6c642d
aoj~{[0].disasm}
aoj~{[0].opex}
EOF
EXPECT=<<EOF
stclhs p12, c6, [r4, -0xbc]!
{"operands":[{"type":"pimm","value":12},{"type":"cimm","value":6},{"type":"mem","base":"r4","scale":1,"disp":188,"subtracted":true}],"writeback":true,"cc":"hs"}
EOF
RUN
NAME=aom
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
aom 3
aom aam
aoma~mova
EOF
EXPECT=<<EOF
aam
3
cmova conditional move - above/not below nor equal (cf=0 and zf=0)
cmovae conditional move - above or equal/not below/not carry (cf=0)
movabs absolute data moves
movapd move aligned packed double-fp values
movaps move aligned packed single-fp values
vmovapd move aligned packed double-precision floating-point values
vmovaps move aligned packed single-precision floating-point values
EOF
RUN