summaryrefslogtreecommitdiff
path: root/arch
AgeCommit message (Collapse)Author
2024-08-27Fixed fall-through VMOV liftingGalen Williamson
Conditions were not cascading, caused instructions to generate il for multiple variants of VMOV
2024-08-27Cleaned up formatting on new and old codeGalen Williamson
2024-08-27Constraint NEON instructions using operation flagsMason Reed
Also fix some formatting issues
2024-08-27Use split registers for VMOVMason Reed
2024-08-27Fix VPOP not setting registersMason Reed
2024-08-27Fix VDIV constraints and lift VNEGMason Reed
2024-08-27Fix unconstrained VADD and VABSMason Reed
2024-08-27Lift VMRS and mark system registersMason Reed
System registers needed to be marked to prevent the registers from being passed as arguments
2024-08-27Lift VSUB, VDIV, VMUL, VFMAMason Reed
VSUB already existed but it was lifted as a regular SUB instruction
2024-08-27Lift more variants of VCVT and correct a missed variant caseMason Reed
2024-08-27Lift VSTMIA, VLDMIAMason Reed
2024-08-27Fix non R register groups referencing PC for 15th register indexMason Reed
Any usage of d15, s15, q15 was completely broken
2024-08-27Lift misc V_ thumb instrunctionsMason Reed
2024-08-27Lift VMOVMason Reed
2024-08-27Lift VLDR and VSTRMason Reed
2024-08-27Lift VPOP and VPUSHMason Reed
2024-08-27Fix getting incorrect S and D registers in lifted ilMason Reed
2024-08-27Remove duplicate conditional checks in v_ liftsMason Reed
2024-08-22Specialize relocation warning for 32-bit/64-bit.Alexander Taylor
2024-08-22Fix MSP430 lifting bugs causing crashes and errors.Alexander Taylor
2024-08-22Make MSP430 correctly load after ELF view.Alexander Taylor
2024-08-22Fix MSP430 dependencies.Alexander Taylor
2024-08-22Fix build error in MSP430, update README.Alexander Taylor
2024-08-22Add msp430 architectureJoe Rozner
2024-08-21Fix thumb2 lifting of REVMason Reed
2024-08-12Add decode, disassembly, IL for TLBINV, TLBINVFnoone
2024-08-12Sign-extend results of 32-bit operations on HI, LOnoone
For 64-bit architectures, the results weren't properly sign-extended when they were supposed to be for 32-bit operations. This doesn't change the fact that the source of the register size is still suspect, and this new sign extension may not properly take place for 64-bit architectures using 32-bit addresses, but solving that will take a bit more examination in general.
2024-08-12Add IL, intrinsics for TLB-related instructionsnoone
2024-08-12Add intrinsics for some system instructionsnoone
Except for SYNCI, I didn't have any test cases for these, but they're fairly simple.
2024-08-12Differentiate some enums in IL switch statementnoone
This makes it easier to see which instructions still need to be lifted versus those which never should be lifted.
2024-08-12Remove checks for 64-bit shift instructionsnoone
These aren't really needed; if it's for a 32-bit architecture that can't handle 64-bit shifts, then the instruction won't be decoded in the first place. Because the registerSize is derived from the address size, it may interfere with 64-bit architectures that are using signed 32-bit addresses. There are a few other places that check registerSize (for example, the 32->64 bit sign extension idiom and MADD, MADDU) that are suspect, but not included in this commit. The difference is that for 64-bit shifts, checking at all for the register size is the problem; for those, the check is still needed to figure out whether to sign extend or not, but the value of registerSize is suspect.
2024-08-06Add flag role for carry flag when subtraction is implemented with additionRusty Wagner
2024-08-02Properly lift push r16 instructions in x86. Fix ↵Xusheng
https://github.com/Vector35/binaryninja-api/issues/4028
2024-07-24change parameter name to align the function definitionZichuan Li
A user reported in public slack that the definition doesn't agree on endianness
2024-07-12Regenerate Cargo lock file after bindgen update.Alexander Taylor
2024-07-09[arm64] cleaned up dangling else warnings and removed unneeded ENC_LDR_Q* ↵Galen Williamson
case from neon_intrinsics.cpp
2024-07-09Fix warning in mips arch (skip-note, skip-ci)Mason Reed
2024-07-08Add Cavium Octeon MIPS Instructions and more general MIPS fixesnoone
2024-07-08[arm64] Full review of intrinsics; lifting of many instructions added, ↵Galen Williamson
improved, and/or fixed Merged https://github.com/Vector35/binaryninja-api/pull/5461: Author: yrp <yrp604@protonmail.com> Date: Sat May 25 21:00:26 2024 -0700 arm64: lift sxtl, sxtl2, sshll, sshll2 Partial list of detailed changes squashed into this commit (see https://github.com/Vector35/binaryninja-api/tree/arm64_improving_intrinsics for detailed commit history): * add lifting for sshll/sxtl * reverted neon_intrinsics.cpp to restore scvtf intrinsics * lifted sxtl/2, sshll, ushll, sshl, sshr, ushl, ushr, and changed the lifting of uxtl/2 to be consistent with sxtl/2 * reformatted arm64test.py and added tests for sxtl/2, sshll, ushll, sshl, sshr, ushl, ushr, and uxtl/2 fix scvtf (unroll because no intrinsic) and fsub (missing register assignment) half-precision vector cases * added preferIntrinsics setting to arm64 * added lifting for movn * fixed incorrect int/float conversions for FMOV, made half-precision immediates survive the lift to M/HLIL * fix missing break in SCVT; optimize MOVK * improved preferIntrinsics * fixed bad lifting introduced for movn * fixed bad settings definition for preferIntrinsics * added intrinsic definition for DUP from general register * added direct lifting of scalar version of FADDP, and fixed intrinsics for vector version * added direct lifting of scalar version of FABD, and fixed intrinsics for vector version * fixes to test_gen.py: gets the correct encoding instead of sometimes getting fooled by the mnemonic * fixed lifting of UCVTF; reviewed/fixed all intrinsics through SQXTUN * reviewed/fixed remaining intrinsics after SQXTUN * added lifting for FNMUL * WIP intrinsics improvements * WIP intrinsics improvements 2 * WIP intrinsics improvements: FCVT*_asisdmisc_R * added B.AL, B.NV, CASP* * direct lifting of scalar FSQRT instruction * SETREG now elides setting of targeting zero registers * fixed test_gen.py to correctly regenerate arm64test.py * unroll vector MOV operations, USHL no longer uses intrinsic for scalars * updated existing tests in arm64test.py for latest lifting changes * fixed CASH* and CASB* incorrectly accessing temp register in comparison (resulting in comparing to NOP) * lifting all variants of TBL as intrinsic * fixes/improvements to test_gen.py * lifting all variants of TBX as intrinsic * added tests for CAS*, UMUL*, UADD*, FABD, FABS, FADDP, FMAX, FMAXNM, FMIN, FMINNM, FNEG, FNMUL, FCMEQ, FCMGE, FCMGT, FMLA, FMLS * added tests for all aliases of SBFM
2024-06-19Add data_variable_at_address and fixed the type propagation issue in riscvZichuan Li
2024-06-13[arm64]: fix broken compilation on windowsGalen Williamson
no Elvis operator ?:( api\arch\arm64\il.cpp(894): error C2059: syntax error: ':' api\arch\arm64\il.cpp(1839): error C7555: use of designated initializers requires at least '/std:c++20'
2024-06-13[arm64] fixed lifting for LDADD*, filled in lifting for alias STADD*, fixed ↵Galen Williamson
tests for recently added system registers dczid_el0 and ctr_el0; fixes #5603
2024-06-13[arm64] fixes and improvements to test_gen.pyGalen Williamson
2024-06-12Disassemble SFENCE.VM instructionMason Reed
2024-06-11More descriptive error for TP-relative reloc.Alexander Taylor
2024-06-11Add some missing arm64 system registersJosh Ferrell
2024-06-11Fix lifting of pair load operations when first and third operand are equal ↵Josh Ferrell
and reduce code duplication
2024-05-31improve efficiencyZichuan Li
2024-05-31Fixed type propagation issue in AARCH64 and MIPSZichuan Li
Previously, prtinf type library is not being appropriately applied. #3092
2024-05-30[arm64] lift scvtfGalen Williamson
* only scalar variants for integer and floating point * updated arm64test.py for scvtf * removed intrinsics for scvtf, scalar integer and floating point variants