我正在做一些代码生成。是否有可能在编译时找到全局C变量的未来地址?
假设C文件中有一个全局变量:
const char[] bytecode = "generated bytecode goes here";
之后,我需要在编译时添加指向bytecode
的代码:
const char* ptrInsideBytecode = 0x1234 + offset;
// 0x1234 should be the address of bytecode
只能引用字节码字段,指针必须是固定的。
我知道myVar在编译和链接后会处于某个固定的位置,所以这应该是可能的。如何在编译之前找到bytecode
的确切地址?
答案 0 :(得分:2)
没有办法做到这一点,因为编译器必须执行求和才能知道值是什么,但是在链接器运行之前,地址将不会被知道。
根据您的平台,您可以使用链接描述文件将字节码放在内存中的固定位置。如果您使用的是没有操作系统的微控制器,这种情况可能会有效。
答案 1 :(得分:0)
它在编译时没有地址;要知道为什么,你可以在不同的机器上编译它,而不是执行它的那个(或更多!)。
答案 2 :(得分:0)
const char bytecode[] = "generated bytecode goes here";
// After that, I need to add code pointing to bytecode at compile time:
#define offset 6
const char *ptrInsideBytecode = bytecode + offset;
// the address you want >>>-----^^^^^^^^