用ASMJIT引用全局变量

Referring global variable with AsmJit

本文关键字:全局变量 引用 ASMJIT      更新时间:2023-10-16

我需要将现有的全局变量/exernal变量的地址加载到使用LEA操作的寄存器。这可能在Asmjit中吗?关联的PTR函数似乎仅接受需要在ASMJIT中创建的GPVAR。

有多种方法可以做到这一点。最便携式和建议的方法是使用 mov reg,imm

using namespace asmjit;
using namespace asmjit::host;
// You have to initialize these...
Compiler c;
GpVar var(c, kVarTypeIntPtr);
void* p = NULL;
c.mov(var, imm_ptr(p));

lea reg,mem 具有绝对地址[mem]表格。该解决方案仅在32位模式下按预期工作。绝对地址大小总是将32位截断:

c.lea(var, ptr_abs(p));