mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
812 B
22 lines
812 B
#ifndef CRYPTONIGHTR_JIT_H |
|
#define CRYPTONIGHTR_JIT_H |
|
|
|
// Minimalistic JIT code generator for random math sequence in CryptonightR |
|
// |
|
// Usage: |
|
// - Allocate writable and executable memory |
|
// - Call v4_generate_JIT_code with "buf" pointed to memory allocated on previous step |
|
// - Call the generated code instead of "v4_random_math(code, r)", omit the "code" parameter |
|
|
|
typedef void (*v4_random_math_JIT_func)(uint32_t* r) |
|
#if defined __i386 || defined __x86_64__ |
|
__attribute__((sysv_abi)) |
|
#endif |
|
; |
|
|
|
// Given the random math sequence, generates machine code (x86-64) for it |
|
// Returns 0 if code was generated successfully |
|
// Returns -1 if provided buffer was too small |
|
int v4_generate_JIT_code(const struct V4_Instruction* code, v4_random_math_JIT_func buf, const size_t buf_size); |
|
|
|
#endif // CRYPTONIGHTR_JIT_H
|
|
|