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? cpointer? arch : exact-integer? mode : exact-integer?
procedure
(uc-close uc) → exact-integer?
uc : cpointer?
procedure
(uc-mem-map uc address size perms) → exact-integer?
uc : cpointer? address : exact-nonnegative-integer? size : exact-nonnegative-integer? perms : exact-nonnegative-integer?
procedure
(uc-mem-write uc address bytes size) → exact-integer?
uc : cpointer? address : exact-nonnegative-integer? bytes : bytes? size : exact-nonnegative-integer?
procedure
(uc-mem-read uc address bytes size) → exact-integer?
uc : cpointer? address : exact-nonnegative-integer? bytes : bytes? size : exact-nonnegative-integer?
procedure
(uc-reg-write uc regid value) → exact-integer?
uc : cpointer? regid : exact-integer? value : cpointer?
procedure
(uc-reg-read uc regid value) → exact-integer?
uc : cpointer? regid : exact-integer? value : cpointer?
procedure
(uc-emu-start uc begin until timeout count) → exact-integer?
uc : cpointer? 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) → cpointer?
procedure
(uc-create-x64) → cpointer?
procedure
(uc-create-riscv32) → cpointer?
procedure
(uc-create-riscv64) → cpointer?
procedure
(uc-reg-write-u64 uc regid value) → void?
uc : cpointer? regid : exact-integer? value : exact-nonnegative-integer?
procedure
(uc-reg-write-s64 uc regid value) → void?
uc : cpointer? regid : exact-integer? value : exact-integer?
procedure
(uc-reg-read-u64 uc regid) → exact-nonnegative-integer?
uc : cpointer? regid : exact-integer?
procedure
(uc-reg-write-u32 uc regid value) → void?
uc : cpointer? regid : exact-integer? value : exact-nonnegative-integer?
procedure
(uc-reg-read-u32 uc regid) → exact-nonnegative-integer?
uc : cpointer? regid : exact-integer?
procedure
(uc-reg-write-u128 uc regid bytes) → void?
uc : cpointer? regid : exact-integer? bytes : bytes?
procedure
(uc-reg-read-u128 uc regid) → bytes?
uc : cpointer? regid : exact-integer?
procedure
(uc-map-memory uc address size) → void?
uc : cpointer? address : exact-nonnegative-integer? size : exact-nonnegative-integer?
procedure
(uc-write-code uc address code-bytes) → void?
uc : cpointer? address : exact-nonnegative-integer? code-bytes : bytes?
procedure
(uc-emulate uc start-addr end-addr) → void?
uc : cpointer? start-addr : exact-nonnegative-integer? end-addr : exact-nonnegative-integer?