PhilippTakacs e8ca3cbea5 Optimize memory handling (#1963)
* optimize ram block handling

Save the last element of the ram_list. This allows to
faster find where to add new elements when they are not
bigger then page size.

* save ram_list freed

this keeps the optimization for find_ram_offset() intact after snapshot
restore.

* cow only clear the tlb of affected pages

* update flatview when possible

Building each flatview new when the memory has changed is quite
expensive when many MemoryRegions are used. This is an issue when using
snapshots.

* update benchmark for new api

* save flatview in context

this avoids rebuilding the flatview when restore a context.

* init context flatview with zero

* address_space_dispatch_clear remove subpage with higher priority

* docutemnt the options for UC_CTL_CONTEXT_MODE

Specialy stress that with UC_CTL_CONTEXT_MEMORY it is not possible to
use the context with a different unicorn object.
2024-10-16 21:51:13 +08:00
2024-09-26 18:38:23 +08:00
2023-08-04 11:24:00 -03:00
2024-09-22 00:14:03 +08:00
2024-10-16 21:51:13 +08:00
2023-06-16 15:23:41 -07:00
2024-10-16 21:51:13 +08:00
2024-02-12 00:10:58 +08:00
2024-10-16 21:51:13 +08:00
2024-10-02 16:03:58 +08:00
2015-08-21 15:04:50 +08:00
2024-08-08 10:15:50 +02:00
2024-09-26 18:44:51 +08:00
2024-09-26 18:44:51 +08:00
2024-09-26 18:44:51 +08:00
2024-09-26 18:44:51 +08:00
2015-08-21 15:04:50 +08:00
2016-12-27 10:15:08 +08:00
2023-07-11 11:51:44 +02:00
2021-11-07 20:24:50 +01:00
2022-02-12 16:28:43 +01:00
2024-09-21 23:02:38 +08:00
2022-10-31 12:35:37 +08:00
2024-10-16 21:51:13 +08:00
2021-10-06 12:52:52 +02:00
2024-10-16 21:51:13 +08:00

Unicorn Engine

pypi downloads Fuzzing 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, PowerPC, RISCV, SPARC, S390X, TriCore and X86 (16, 32, 64-bit)
  • Clean/simple/lightweight/intuitive architecture-neutral API
  • Implemented in pure C language, with bindings for Crystal, Clojure, Visual Basic, Perl, Rust, Ruby, Python, Java, .NET, Go, Delphi/Free Pascal, Haskell, Pharo, Lua and Zig.
  • Native support for Windows & *nix (with Mac OSX, Linux, Android, *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 docs/COMPILE.md 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 milestones for our regular release.

Please send pull request to our dev branch.

CREDITS.TXT records important contributors of our project.

Description
No description provided
Readme 16 MiB
Languages
C 87.2%
Java 2.6%
Python 2.1%
Pawn 1.2%
Rust 0.9%
Other 5.9%