Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, X86)
Go to file
Adrian Herrera 74aaf3b321 Haskell bindings
These Haskell bindings make large use of c2hs to generate much of the code, so
Unicorn's const_generator is not used.

The emulator is based on the Either monad transformer. The IO monad is used to
run the underlying Unicorn library, while the Either monad is used to handle
errors.

Instructions on how to build the bindings are located in
bindings/haskell/README.TXT. The same samples found in samples/ can be found
in bindings/haskell/samples. They should produce the same output, with slight
differences in their error handling and messaging.
2016-04-06 09:21:36 +10:00
bindings Haskell bindings 2016-04-06 09:21:36 +10:00
docs rename docs/README to docs/README.md 2016-01-12 09:43:40 +08:00
include add batched reg access 2016-04-04 20:51:38 -07:00
qemu Merge branch 'batch_reg' of https://github.com/lunixbochs/unicorn into lunixbochs-batch_reg 2016-04-06 09:39:22 +08:00
samples samples: code style for sample_batch_reg.c 2016-04-06 09:48:38 +08:00
tests Add test showing failure to track targets properly when single-stepping. 2016-04-05 10:06:39 -07:00
.appveyor.yml rename appveyor.yml to .appveyor.yml 2016-03-14 23:50:58 +08:00
.gitignore update .gitignore 2016-04-06 09:48:14 +08:00
.travis.yml travis: do not need to install pkg-config 2016-03-03 23:41:03 +08:00
AUTHORS.TXT import 2015-08-21 15:04:50 +08:00
ChangeLog add ChangeLog 2015-10-15 23:54:39 +08:00
COMPILE.TXT 80 columns 2016-01-01 14:14:03 +08:00
config.mk import 2015-08-21 15:04:50 +08:00
COPYING import 2015-08-21 15:04:50 +08:00
CREDITS.TXT Haskell bindings 2016-04-06 09:21:36 +10:00
LEAK_VALGRIND import 2015-08-21 15:04:50 +08:00
list.c fix memory corruption in list_remove 2016-03-25 20:28:23 -07:00
make.sh allow setting PREFIX in make.sh 2016-03-30 20:04:49 -07:00
Makefile Makefile: do not recompile samples/ for install target 2016-03-21 13:02:17 +08:00
pkgconfig.mk bump API version to 1.0 2016-02-11 08:05:15 +08:00
README.md Haskell bindings 2016-04-06 09:21:36 +10:00
uc.c add batched reg access 2016-04-04 20:51:38 -07:00

Unicorn Engine

Join the chat at https://gitter.im/unicorn-engine/chat

Build Status Build status

Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework based on QEMU.

Unicorn offers some unparalleled features:

  • Multi-architecture: ARM, ARM64 (ARMv8), M68K, MIPS, SPARC, and X86 (16, 32, 64-bit)
  • Clean/simple/lightweight/intuitive architecture-neutral API
  • Implemented in pure C language, with bindings for Ruby, Python, Java, MSVC, .NET, Go, Delphi/Free Pascal and Haskell.
  • Native support for Windows & *nix (with Mac OSX, Linux, *BSD & Solaris confirmed)
  • High performance via Just-In-Time compilation
  • Support for fine-grained instrumentation at various levels
  • Thread-safety by design
  • Distributed under free software license GPLv2

Further information is available at http://www.unicorn-engine.org

License

This project is released under the GPL license.

Compilation & Docs

See COMPILE.TXT file for how to compile and install Unicorn.

More documentation is available in docs/README.md.

Contact

Contact us via mailing list, email or twitter for any questions.

Contribute

If you want to contribute, please pick up something from our Github issues.

We also maintain a list of more challenged problems in a TODO list.

CREDITS.TXT records important contributors of our project.