aboutsummaryrefslogtreecommitdiff
path: root/tests/armv7
AgeCommit message (Collapse)Author
2026-07-28Decode the correct number of operands for CMP/CMN (immediate/register)Grond
This also incidentally fixes an issue where MOV/MVN instructions with a shifted operand could be decoded as if they had 3 operands.
2026-07-28Fix the handling of reserved bits in uncommon loads/storesGrond
There's a pattern of load/store instructions that look something like * `ldr<variant> <target registers>, [<base register>, +/- <offset register>]` * `str<variant> <target registers>, [<base register>, +/- <offset register>]` These instructions share a common encoding format, which includes the presence of 4 reserved bits starting at bit 8 in the instruction word. These bits should always be zero, according to `DDI0406C_d_armv7ar_arm.pdf`. However, while this crate did attempt to validate these bits sometimes, the validation was inverted. Instead of checking that the bits were zero, the validation would raise an error if all of the bits were zero! Additionally, some instructions were missing the check and some instructions that did not use the aforementioned encoding scheme incorrectly had the check applied to them. This commit fixes all of the issues I've found along these lines so far.
2026-07-28Check all of the appropriate bits when parsing op1 for CDP2/MCR2/MRC2Grond
2026-07-28Implement the RRX immediate shift typeGrond
2026-07-28Fix the handling of arithmetic register shifts with zero immediatesGrond
2026-02-22support A1 encoding of several coprocessor instructions + SVCrva3
initially was "implement MCR/MRC decoding", but expanded to include the whole coprocessor space for completeness, and then SVC is right there too. Neon instructions in this space are still rejected, as neon support is not really there yet. Co-authored-by: iximeow <me@iximeow.net>
2026-02-22properly display coprocessor higher than 9rva3
2023-01-31fix 24-bit branch immediate decodingjam1garner
2022-09-29Add a test for issue #3Mitchell Johnson
2022-09-29Add some additional 32-bit thumb branch decode test casesMitchell Johnson
2022-09-29Fix 32-bit conditional thumb branchesMitchell Johnson
Correct the shift used to select condition bits and correctly compute the branch offset.
2022-09-29Fix negative unconditional 16-bit thumb branchesMitchell Johnson
Sign extension shift had an off-by-one error so the sign bit was not being properly extended.
2022-09-29Fix 32-bit Thumb unconditional branch decodingMitchell Johnson
T4 encodings of unconditional branches were not being interpreted correctly (#6), and 32-bit bl/blx instructions were similarly incorrect. Correct the bits selected for op1 and op2 and handle the slightly-unusual i1/i2 sign bit xor for these instructions.
2022-01-02get test situation in orderiximeow