我有一个C代码,声明一个全局指针并初始化它。像这样:
my_type* var = malloc(...)
当我在ASM x86中将var声明为extern符号时,我得到了对指针的引用,即双指针,这真的很不方便,因为无论何时我想访问内容,我都必须这样做:
extern var
mov ax, [var]
mov dx, [ax]
我希望在ASM中获得一个符号,该符号包含malloc返回的值,即我在C代码中指向my_type的指针。
有办法做到这一点吗?
答案 0 :(得分:3)
变量的工作原理。符号的值(即其地址)在运行时不能改变,这就是符号通常解析为数据的地址而不是数据本身的原因。没有办法获得您想要的确切行为,因为在链接时无法知道地址malloc
返回。
如果你想避免处理包含指针的变量,可以考虑在静态存储中创建一个数组。