capstone/bindings/python
z a012f75754 RISCV support ISRV32/ISRV64 (#1401)
* Added RISCV dir to contain the RISCV architecture engine code. Adding the TableGen files generated from llvm-tblgen. Add Disassembler.h

* Started working on RISCVDisassembler.c - RISCV_init(), RISCVDisassembler_getInstruction, and RISCV_getInstruction

* Added all functions to RISCVDisassembler.c and needed modifications to RISCVGenDisassemblerTables.inc. Add and modified RISCVGenSubtargetInfo.inc. Start creation of RISCVInstPrinter.h

* Finished RISCVGenAsmWriter.inc. Finished RISCVGenRegisterInfo.inc. Minor fixes to RISCVDisassembler.c. Working on RISCVInstPrinter

* Finished RISCVInstPrinter, RISCVMapping, RISCVBaseInfo, RISCVGenInstrInfo.inc, RISCVModule.c. Working on riscv.h

* Backport it from: 0db412ce3b

* All RISCV files added. Compiled correctly and initial test for ADD, ADDI, AND works properly.

* Add refactored cs.c for RISCV

* Testing all I instructions in test_riscv.c

* Modify the orignal backport for RISCVGenRegisterInfo.inc, capstone.h and test_iter to work w/ the current code strcuture

* Fix issue with RISCVGenRegisterInfo.inc - RISCVRegDesc[] (Excess elements in struct initializer). Added RISCV tests to test_iter.c

* fixed bug related to incorrect initialization of memory after malloc

* fix compile bug

* Fix compile errors.

* move riscv.h to include/capstone

* fix indentation issues

* fix coding style issues

* Fix indentation issues

* fix coding style

* Move variable declaration to the top of the block

* Fix coding indentation

* Move some stuff into RISCVMappingInsn.inc

* Fix code sytle

* remove cs_mode support for RISCV

* update asmwriter-inc to LLVM upstream

* update the .inc files to riscv upstream

* update riscv disassembler function for suport 16bit instructions

* update printer & tablegen inc files which have fixed arguments mismatch

* update headers and mapping source

* add riscv architecture specific test code

* fix all RISCV tons of compiler errors

* pass final tests

* add riscv tablegen patchs

* merge with upstream/next

* fix cstool missing riscv file

* fix root Makefile

* add new TableGen patchs for riscv

* fix cmakefile.txt of missing one riscv file

* fix declaration conflict

* fix incompatible declaration type

* change riscvc from arch to mode

* fix test_riscv warnning

* fix code style and add riscv part of test_basic

* add RISCV64 mode

* add suite for riscv

* crack fuzz test

* fix getfeaturebits test add riscvc

* fix test missing const qualifier warnning

* fix testcase type mismatch

* fix return value missing

* change getfeaturebits test

* add test cs files

* using a winder type contain the decode string

* fix a copy typo

* remove useless mode for riscv

* change cs file blank type

* add repo for update_riscv & fix cstool missing riscv mode

* fix typo

* add riscv for cstool useage

* add TableGen patch for riscv asmwriter

* clean ctags file

* remove black comment line

* fix fuzz related something

* fix missing RISCV string of fuzz

* update readme, etc..

* add riscv *.s.cs file

* add riscv *.s.cs file & clear ctags

* clear useless array declarations at capstone_test

* update to 5e4069f

* update readme change name more formal

* change position of riscv after bpf and modify copyright more uniform

* clear useless ctags file

* change blank with tab in riscv.h

* add riscv python bindings

* add riscv in __init__.py

* fix riscv define value for python binding

* fix test_riscv.py typo

* add missing riscvc in __init__.py of python bindings

* fix alias-insn printer bug, remove useless newline

* change inst print delimter from tab to bankspace for travis

* add riscv tablegen patch

* fix inst output more consistency

* add TableGen patch which fix inst output formal

* crack the effective address output for detail and change register print function

* fix not detail crash bug

* change item declaration position at cs_riscv

* update riscv.py

* change function name more meaningfull

* update python binding makefile

* fix register enum sequence according to riscvgenreginfo.inc

* test function name

* add enum s0/fp in riscv.h & update riscv_const.py

* add register name enum
2019-03-09 08:41:12 +08:00
..
capstone RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
prebuilt Add ability to copy prebuilt libraries from prebuilt directory during python build 2017-03-04 17:09:07 -08:00
pyx Fix a couple of corner-cases with rarely used m68k instructions. (#1344) 2019-01-21 17:42:01 +08:00
.gitignore Python: Make cython work with extreme prejudice 2016-10-25 21:49:58 -07:00
BUILDING.txt Rename test.c to test_basic.c with corresponding executable name change. (#923) 2017-05-11 22:58:12 +07:00
LICENSE.TXT python: add LICENSE & PKG-INFO for Python module 2015-01-30 14:45:58 +08:00
Makefile RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
MANIFEST.in Python: Clean up the capstone-windows stuff with extreme prejudice 2016-10-25 21:48:41 -07:00
README.txt Add option for inhibiting the core build while installing the python components. Add option for loading the core from a custom path. (#1089) 2018-02-20 21:12:46 +08:00
setup.py bindings/python: fix install error due to old libname (#1338) 2019-01-11 00:10:25 +08:00
setup_cython.py add Ethereum VM architecture 2018-03-31 17:29:22 +08:00
test_all.py RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
test_arm.py arm: treat ARM address as unsigned 2016-09-04 00:13:50 +09:00
test_arm64.py python: add access field for ARM64 2016-04-12 13:42:07 +08:00
test_basic.py RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
test_bpf.py New architecture: BPF (#1388) 2019-02-18 17:39:51 +08:00
test_customized_mnem.py python: a minor fix for test_customized_mnem.py 2015-04-27 12:56:31 +08:00
test_detail.py M680X: Target ready for pull request (#1034) 2017-10-21 21:44:36 +08:00
test_evm.py python: make test_evm.py to output like test_evm.c 2019-02-17 23:19:56 +08:00
test_lite.py M680X: Target ready for pull request (#1034) 2017-10-21 21:44:36 +08:00
test_m68k.py M68K: Branch targets are a separate addressing mode; PC relative displacements printed as target addresses (#1068) 2018-01-06 20:13:41 +08:00
test_m680x.py M680X: Target ready for pull request (#1034) 2017-10-21 21:44:36 +08:00
test_mips.py python: update Mips modes to CS_MODE_MIPS32 & CS_MODE_MIPS64 2014-11-13 11:42:38 +08:00
test_mos65xx.py MOS65XX: Fix instruction length for indirect addressing modes (#1402) 2019-02-28 07:39:59 +08:00
test_ppc.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_riscv.py RISCV support ISRV32/ISRV64 (#1401) 2019-03-09 08:41:12 +08:00
test_skipdata.py python: temporarily comment out skipdata setup, which is still broken on MacOS. #1316 2019-01-02 10:11:48 +08:00
test_sparc.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_systemz.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_tms320c64x.py Added support for the TMS320C64x architecture. 2017-04-14 17:00:40 +03:00
test_x86.py Merges encoding to next (#1194) 2018-07-04 22:47:55 +08:00
test_xcore.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
xprint.py python: support option CS_OPT_MNEMONIC 2015-04-27 11:34:44 +08:00

To install Capstone, you should run `pip install capstone`.

If you would like to build Capstone with just the source distribution, without
pip, just run `python setup.py install` in the folder with setup.py in it.

In order to use this source distribution, you will need an environment that can
compile C code. On Linux, this is usually easy, but on Windows, this involves
installing Visual Studio and using the "Developer Command Prompt" to perform the
installation. See BUILDING.txt for more information.

By default, attempting to install the python bindings will trigger a build of
the capstone native core. If this is undesirable for whatever reason, for
instance, you already have a globally installed copy of libcapstone, you may
inhibit the build by setting the environment variable LIBCAPSTONE_PATH. The
exact value is not checked, just setting it will inhibit the build. During
execution, this variable may be set to the path of a directory containing a
specific version of libcapstone you would like to use.

If you don't want to build your own copy of Capstone, you can use a precompiled
binary distribution from PyPI. Saying `pip install capstone` should
automatically obtain an appropriate copy for your system. If it does not, please
open an issue at https://github.com/aquynh/capstone and tag @rhelmot - she
will fix this, probably!

--------------------------------------------------------------------------------

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 wrappers for C++, C#, Go,
  Java, NodeJS, Ocaml, Python, Ruby & Vala ready (available 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


[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.