Kevin Quick
c3f2d13092
[arm] Implement identifyReturn (not properly functional).
...
The Macaw Discovery now calls the identifyReturn to identify return
statements. Supply this for ARM, but at present this simply
replicates the original inline code which does not properly detect ARM
return operations because the low bit(s) of the address are always
cleared when writing to the instruction pointer in ARM.
2018-03-27 10:52:50 -07:00
Kevin Quick
9e0c325400
[arm] Fail disassembly if readInstruction returns 0 bytes consumed
...
Without this check this condition could cause the disassembly to
recurse until all system memory is exhausted.
2018-03-26 16:05:34 -07:00
Kevin Quick
80886bd73d
[arm] Add support for Thumb THINT uninterpreted function.
2018-03-26 16:04:34 -07:00
Kevin Quick
0069d3c907
[arm] Add ExtractValue for Maybe of Thumb LowGPR operand.
2018-03-11 10:54:33 -07:00
Kevin Quick
b0205af9ff
[arm] Added ExtractValue for Thumb AddrModeIs4 operand.
2018-03-11 10:34:44 -07:00
Kevin Quick
c50f01efef
[arm] Added test exe and results for test-just-exit-t32.
2018-03-10 21:55:29 -08:00
Kevin Quick
5e72398ef2
[arm] Add support for the Thumb Reglist operand.
2018-03-10 10:05:52 -08:00
Kevin Quick
1bceb8dc32
[arm] Update for change in export of numGPR from semmc-ppc.
2018-03-10 10:03:01 -08:00
Kevin Quick
491c302bfb
[arm] Add support for ARM Thumb TImm01020S4 operand.
2018-03-07 14:48:34 -08:00
Kevin Quick
ca2c54a98f
[arm] Simplification of instruction decode selection wrapping.
2018-03-07 10:19:55 -08:00
Kevin Quick
af590fc7db
[arm] Add support for imm5 operand type.
2018-03-07 10:07:51 -08:00
Kevin Quick
cf9b6c5a30
[arm] Updated disassemble operation to support A32 or T32 block disassembly.
2018-03-07 10:06:29 -08:00
Kevin Quick
acb8812d68
[arm] Fix non-semantics instruction matcher to return Nothing when unrecognized.
2018-03-07 00:42:01 -08:00
Kevin Quick
54f87526e7
[arm] Update test LoadOptions for new loadRegionBaseOffset parameter.
2018-03-07 00:40:40 -08:00
Kevin Quick
1e85a15146
[arm] Add operands and genExecInstruction support for Thumb.
2018-03-07 00:36:22 -08:00
Kevin Quick
c3d89976e6
[arm] Update Operand eval to clarify A32 and for GPR number abstraction.
2018-03-07 00:32:17 -08:00
Kevin Quick
9f66c7a773
[arm] Update A32 instruction generation for new type args.
2018-03-07 00:30:15 -08:00
Kevin Quick
97a5902408
[arm] Add appEval for URem since it is not handled directly by Macaw base.
2018-03-07 00:27:51 -08:00
Kevin Quick
40b13f63b3
[arm] Define ARM_GP as standalone instead of in terms of A32 GPR.
...
Removes a dependency of the general Macaw semantics on the underlying
A32 dismantle/semmc representation.
2018-03-05 16:10:54 -08:00
Kevin Quick
3af6050855
[arm] Explicit ARM Dismantle module reference to avoid confusion.
2018-03-01 12:53:49 -08:00
Kevin Quick
a7d3270520
[arm] Add ExtractValue instance for Word16 (Shift_so_reg_imm operand).
2018-03-01 12:51:12 -08:00
Kevin Quick
6d373bfcc5
[arm] Add value extraction for BranchExecuteTarget operand encoding.
2018-03-01 00:31:08 -08:00
Kevin Quick
610fdc93b5
[arm] Use renamed version of expected binary analysis results.
2018-02-27 10:48:11 -08:00
Kevin Quick
70d4cbee2d
[arm] Update ARMTests to validate binary analysis against expected results.
2018-02-27 10:46:01 -08:00
Kevin Quick
16dbc72948
[arm] Update naming scheme for generated A32 and T32 test executables.
2018-02-27 10:02:33 -08:00
Kevin Quick
1606ad994d
[arm] Add arch-specific handling for arm.isR15 uninterpreted function.
2018-02-23 15:40:19 -08:00
Kevin Quick
70a71cc64c
[arm] Minimal ELF binary format loading functionality for initial testing.
2018-02-22 18:00:18 -08:00
Kevin Quick
2983562204
[arm] Update for argument change to Macaw.Memory.LoadOptions.
2018-02-22 17:36:07 -08:00
Kevin Quick
50b4d3e784
[arm] remove unused semantics TH definitions.
2018-02-22 17:24:44 -08:00
Kevin Quick
83dc9ad394
[arm] Cleanup imports and avoid name conflicts in Macaw.ARM.Arch.
2018-02-22 17:16:55 -08:00
Kevin Quick
a15840ead7
[arm] whitespace/formatting cleanup.
2018-02-22 17:05:38 -08:00
Kevin Quick
b444c76969
[arm] Implement rewriteArchTermStmt (ARMSyscall only so far).
2018-02-22 17:03:26 -08:00
Kevin Quick
10d9144f1e
[arm] Added support for SVC syscall with argument.
2018-02-22 17:01:20 -08:00
Kevin Quick
747ce16f5f
[arm] Add arm_LR link register and initialize it in the abstract state.
2018-02-22 16:58:34 -08:00
Kevin Quick
3120eda53f
[arm] Add value extraction for LdstSoReg operand.
2018-02-22 16:24:02 -08:00
Kevin Quick
1027ad0c06
[arm] Simple armNonceAppEval: no arch-specific overrides needed.
2018-02-22 16:22:54 -08:00
Kevin Quick
a9b55b655b
[arm] Added identifyCall and identifyReturn trivial implementations.
2018-02-22 16:15:34 -08:00
Kevin Quick
cc623ae16f
[arm] Added trivial rewriteArchFn ... currently no ARM primitives.
2018-02-22 16:09:32 -08:00
Kevin Quick
99bbff0f5f
[arm] Add rewriteStmt (trivial implementation).
2018-02-22 16:08:01 -08:00
Kevin Quick
d2fb7b751a
[arm] Output logging information while generating instructions.
2018-02-22 15:43:54 -08:00
Kevin Quick
24f1f65cc6
[arm] Add value extraction for SoRegReg operand.
2018-02-20 08:52:02 -08:00
Kevin Quick
2e6245b378
[arm] Add value extraction for SoRegImm operand
2018-02-20 08:50:56 -08:00
Kevin Quick
0e540d2025
[arm] Added CPSR as a known register.
2018-02-20 08:38:17 -08:00
Kevin Quick
075a0f54e4
[arm] ExtractValue instances for Pred, SBit, and BranchExecuteTarget operands.
2018-02-07 11:38:04 -08:00
Kevin Quick
0ccba8974d
[arm] Initial nonce app eval, covering arm_is_r15
2018-02-02 16:49:56 -08:00
Kevin Quick
d5292afc76
[arm] add missing import for Operand support with genInstruction.
2018-02-02 16:46:47 -08:00
Kevin Quick
4595a15cc3
[arm] Initial operand support with GP registers handled.
2018-02-02 16:06:52 -08:00
Kevin Quick
f6a0f7bc49
[arm] ARM uses the term PC (Program Counter) instead of IP (Instruction Ptr).
2018-02-02 15:57:02 -08:00
Kevin Quick
f4280134cc
[arm] Correct word size import for disassembly errors.
2018-02-02 15:48:01 -08:00
Kevin Quick
55320831b4
[arm] Use error for TBD functions for runtime visible identification
2018-01-24 11:08:03 -08:00