【发布时间】:2020-10-18 22:45:49
【问题描述】:
我想知道 void 指针是如何实现的。我试图用 x86-64 在 Godbolt 上找到它(你可以看到它here),但它没有透露任何东西。 void指针是如何实现的?
编辑: 这是我使用的代码:
int main() {
int volatile y = 123;
void* volatile x = &y;
}
我想在这里看到的只是x 的样子。我放 volatile 是为了让 gcc 不会把它当作死代码来消除。
【问题讨论】:
-
我不确定您希望在那里看到什么。
y位于 -12(%rsp),x位于 -8(%rsp)。它将指向y的指针加载到 rax,将值 123 存储到 -12(%rsp),然后将 rax 存储到 -8(%rsp)。 -
我建议在问题中包含您的实验代码,以及以这种方式设计该实验的某种原因。
-
@PeterCordes -- 我更新了我的问题。
标签: c pointers assembly x86-64 void-pointers