Racket Unicorn
| (require racket-unicorn) | package: racket-unicorn |
Racket FFI bindings for the Unicorn CPU emulator.
1 Constants
1.1 Architecture Types
value
value
value
1.2 Mode Types
value
value
value
value
1.3 Error Codes
value
1.4 Memory Permissions
value
value
value
value
value
1.5 ARM64 General Purpose Registers
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.6 ARM64 SIMD Registers
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.7 X86-64 Registers
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.8 RISC-V General Purpose Registers
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.9 RISC-V Floating-Point Registers
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.10 RISC-V ABI Name Aliases (GP Registers)
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
1.11 RISC-V ABI Name Aliases (FP Registers)
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
2 Core API
procedure
(uc-open arch mode) →
exact-integer? uc-engine arch : exact-integer? mode : exact-integer?
procedure
(uc-close uc) → exact-integer?
uc : uc-engine
procedure
(uc-mem-map uc address size perms) → exact-integer?
uc : uc-engine address : exact-nonnegative-integer? size : exact-nonnegative-integer? perms : exact-nonnegative-integer?
procedure
(uc-mem-write uc address bytes size) → exact-integer?
uc : uc-engine address : exact-nonnegative-integer? bytes : bytes? size : exact-nonnegative-integer?
procedure
(uc-mem-read uc address bytes size) → exact-integer?
uc : uc-engine address : exact-nonnegative-integer? bytes : bytes? size : exact-nonnegative-integer?
procedure
(uc-reg-write uc regid value) → exact-integer?
uc : uc-engine regid : exact-integer? value : cpointer?
procedure
(uc-reg-read uc regid value) → exact-integer?
uc : uc-engine regid : exact-integer? value : cpointer?
procedure
(uc-emu-start uc begin until timeout count) → exact-integer?
uc : uc-engine begin : exact-nonnegative-integer? until : exact-nonnegative-integer? timeout : exact-nonnegative-integer? count : exact-nonnegative-integer?
procedure
(uc-strerror code) → string?
code : exact-integer?
3 Helper Functions
procedure
(uc-create-arm64) → uc-engine
procedure
(uc-create-x64) → uc-engine
procedure
(uc-create-riscv32) → uc-engine
procedure
(uc-create-riscv64) → uc-engine
procedure
(uc-reg-write-u64 uc regid value) → void?
uc : uc-engine regid : exact-integer? value : exact-nonnegative-integer?
procedure
(uc-reg-write-s64 uc regid value) → void?
uc : uc-engine regid : exact-integer? value : exact-integer?
procedure
(uc-reg-read-u64 uc regid) → exact-nonnegative-integer?
uc : uc-engine regid : exact-integer?
procedure
(uc-reg-write-u32 uc regid value) → void?
uc : uc-engine regid : exact-integer? value : exact-nonnegative-integer?
procedure
(uc-reg-read-u32 uc regid) → exact-nonnegative-integer?
uc : uc-engine regid : exact-integer?
procedure
(uc-reg-write-u128 uc regid bytes) → void?
uc : uc-engine regid : exact-integer? bytes : bytes?
procedure
(uc-reg-read-u128 uc regid) → bytes?
uc : uc-engine regid : exact-integer?
procedure
(uc-map-memory uc address size) → void?
uc : uc-engine address : exact-nonnegative-integer? size : exact-nonnegative-integer?
procedure
(uc-write-code uc address code-bytes) → void?
uc : uc-engine address : exact-nonnegative-integer? code-bytes : bytes?
procedure
(uc-emulate uc start-addr end-addr) → void?
uc : uc-engine start-addr : exact-nonnegative-integer? end-addr : exact-nonnegative-integer?