我有一个 C 代码,它声明一个全局指针并对其进行初始化。像这样的事情:
my_type* var = malloc(...)
当我在 ASM x86 中将 var 声明为外部符号时,我得到了对指针的引用,即双指针,这确实很不方便,因为每当我想要访问内容时,我都必须执行以下操作:
extern var
mov ax, [var]
mov dx, [ax]
我想在 ASM 中获取一个符号,该符号保存 malloc 返回的值,即指向 my_type 的指针,就像我在 C 代码中一样。
有办法做到这一点吗?
最佳答案
这就是变量的工作原理。符号的值(即其地址)在运行时不能更改,这就是为什么符号通常解析为数据的地址而不是数据本身。无法获得您想要的确切行为,因为在链接时无法知道 malloc
返回的地址。
如果您想避免处理包含指针的变量,请考虑在静态存储中创建数组。
关于c - 如何取消引用 ASM 数据段中的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925694/