blob: 6fb2f61f86e6da1779975b12fb1466e0c90b9e21 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#pragma once
using namespace asmjit;
class sc {
std::vector<uint8_t> m_buf;
CodeHolder m_code;
JitRuntime m_runtime;
x86::Assembler m_assembler;
bool m_x64;
public:
sc(const bool x64 = false) : m_x64{x64} {
Environment env(x64 ? Environment::kArchX64 : Environment::kArchX86);
m_code.init(env);
m_code.attach(&m_assembler);
}
void start();
void push(const std::vector<uintptr_t> &args);
void call(const uintptr_t addr);
void save_ret(const uintptr_t addr);
void end();
auto &operator()() const { return m_buf; }
auto &operator->() const { return m_assembler; }
};
|