![]() * arm64: handling of system registers added in ARMv8.2 This commit adds handling of system registers added in ARMv8.2. Those registers are accessed by mrs and msr instructions. Changes based on https://static.docs.arm.com/ddi0487/b/DDI0487B_a_armv8_arm.pdf, chapters D7.2-5. List of added registers: id_mmfr4_el1 id_aa64mmfr2_el1 sctlr_el12 cpacr_el12 ttbr0_el12 ttbr1_el12 ttbr1_el2 tcr_el12 spsr_el12 elr_el12 afsr0_el12 afsr1_el12 esr_el12 far_el12 mair_el12 amair_el12 vbar_el12 cntkctl_el12 cnthv_ctl_el2 cnthv_cval_el2 cnthv_tval_el2 cntp_tval_el02 cntp_cval_el02 cntv_ctl_el02 ntv_cval_el02 cntv_tval_el02 lorid_el1 lorc_el1 lorea_el1 lorn_el1 lorsa_el1 contextidr_el12 sign-of: Michalina Oleksy (https://github.com/layika) * arm64: handling of system registers added in ARMv8.1/2 v8.1: PAN (https://static.docs.arm.com/ddi0487/b/DDI0487B_a_armv8_arm.pdf, page 358) PAN (as pstate field) contextdir_el2 v8.2: UAO (https://static.docs.arm.com/ddi0487/b/DDI0487B_a_armv8_arm.pdf, page 403) UAO (as pstate field) * arm64: handling of system registers for statistical profiling Added handling of system registers for statistical profiling extension based on https://static.docs.arm.com/ddi0586/a/DDI0586A_Statistical_Profiling_Extension.pdf * Update AArch64BaseInfo.h * arm64: An attempt to fix indentation |
||
---|---|---|
arch | ||
bindings | ||
contrib | ||
cstool | ||
docs | ||
include | ||
msvc | ||
packages | ||
suite | ||
tests | ||
windows | ||
xcode | ||
.appveyor.yml | ||
.gitignore | ||
.travis.yml | ||
CMakeLists.txt | ||
COMPILE.TXT | ||
COMPILE_CMAKE.TXT | ||
COMPILE_MSVC.TXT | ||
CREDITS.TXT | ||
ChangeLog | ||
HACK.TXT | ||
LEB128.h | ||
LICENSE.TXT | ||
LICENSE_LLVM.TXT | ||
MCDisassembler.h | ||
MCFixedLenDisassembler.h | ||
MCInst.c | ||
MCInst.h | ||
MCInstrDesc.c | ||
MCInstrDesc.h | ||
MCRegisterInfo.c | ||
MCRegisterInfo.h | ||
Makefile | ||
MathExtras.h | ||
README | ||
RELEASE_NOTES | ||
SStream.c | ||
SStream.h | ||
TODO | ||
capstone.pc.in | ||
config.mk | ||
cs.c | ||
cs_priv.h | ||
functions.mk | ||
make.sh | ||
nmake.bat | ||
pkgconfig.mk | ||
utils.c | ||
utils.h |
README
Capstone is a disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community. Created by Nguyen Anh Quynh, then developed and maintained by a small community, Capstone offers some unparalleled features: - Support multiple hardware architectures: ARM, ARM64 (ARMv8), Mips, PPC, Sparc, SystemZ, XCore and X86 (including X86_64). - Having clean/simple/lightweight/intuitive architecture-neutral API. - Provide details on disassembled instruction (called “decomposer” by others). - Provide semantics of the disassembled instruction, such as list of implicit registers read & written. - Implemented in pure C language, with lightweight bindings for Visual Basic, PHP, PowerShell, Emacs, Haskell, Perl, Python, Ruby, C#, NodeJS, Java, GO, C++, OCaml, Lua, Rust, Delphi, Free Pascal & Vala ready either in main code, or provided externally by the community). - Native support for all popular platforms: Windows, Mac OSX, iOS, Android, Linux, *BSD, Solaris, etc. - Thread-safe by design. - Special support for embedding into firmware or OS kernel. - High performance & suitable for malware analysis (capable of handling various X86 malware tricks). - Distributed under the open source BSD license. Further information is available at http://www.capstone-engine.org [Compile] See COMPILE.TXT file for how to compile and install Capstone. [Documentation] See docs/README for how to customize & program your own tools with Capstone. [Hack] See HACK.TXT file for the structure of the source code. [License] This project is released under the BSD license. If you redistribute the binary or source code of Capstone, please attach file LICENSE.TXT with your products.