LLVM 传递以在特定地址分配内存
LLVM Pass to allocate memory at specific addresses
我正在尝试使用 LLVM 传递来转换 C/C++ 程序,以便所有内存分配仅在我决定的某个内存区域中发生。
例如,对于以下代码,我想使用 LLVM 传递在地址 0x10000 处启动所有内存分配:
// Test.cpp
int main()
{
int x = 5; // I want to allocate memory for this variable
// starting at address 0x10000
int y = 6 // Memory allocated at 0x10004, since it's the second int
return 0;
}
有谁知道这是否可以通过LLVM通行证实现?我已经知道我可以使用 pass 遍历程序中的所有指令以查找所有 alloca 指令,但我不知道如何转换程序以便 alloca 在特定地址分配内存。
您可以使用链接器脚本将某个部分放置在该地址,然后使用 LLVM 传递将相关的全局/静态变量放置在该部分中。
但是,您的问题中的 x 和 y 是 main(( 的本地部分,并且倾向于存在于堆栈上,甚至可能存在于机器寄存器中。你知道,我知道main((不会递归地调用自己,但编译器非常努力地允许递归。在传递中解决这个问题并不简单,因此这些变量可能不容易放入特定部分。
相关文章:
- 将数组的地址分配给变量并删除
- 将地址分配给本地指针后,公共对象的变量将消失
- LLVM 传递以在特定地址分配内存
- 如何按顺序或在指定的地址分配内存?
- C 内存地址分配
- 有没有其他方法可以将地址分配给指针变量
- 我可以将文件描述符的地址分配给变量
- 将地址分配给结构内的指针
- 如何将数组的地址分配给指针
- 尝试将派生类对象地址分配给基类指针的向量
- 将派生的对象地址分配给基础指针和调用击路仪的机制
- 在 c++ 中使用指针访问 2d 数组,如何将地址分配给指针
- 查询与将地址分配给共享_ptr有关
- 将非常量的地址分配给常量指针
- 类的地址分配
- 将 int 自己的地址分配给其值
- 如果指定了参数,如何将地址分配给函数指针
- std::bad_alloc从引用的地址分配指针
- 在该地址c++分配之前和之后相等指针之间的差异
- 在窗口中的特定地址分配数据