c - 如何取消引用 ASM 数据段中的指针?

标签 c assembly symbols extern dereference

我有一个 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/

相关文章:

c:绘制控制台的表格布局

c++ - 异常是如何在幕后实现的?

c - 在 C 中初始化结构体 GHashTable

计算文本文件中出现的所有字符

assembly - Qtspim : generating an array and changing value, syntax error

c - 如何将.text段以外的段中的执行代码放到.text段的中间

assembly - 位置参数与关键字参数

c# - UINT8 中的自定义符号 - 如何转换为 C#?

url - SVN特殊符号代表什么?

header - 如何在 CMake 中检查需要两个头文件的符号?