gpt4 book ai didi

c++ - 如何在 C++ 中创建别名(在汇编级别)?

转载 作者:行者123 更新时间:2023-11-30 01:58:46 24 4
gpt4 key购买 nike

这个问题听起来很愚蠢。当然,只需键入:

  int i = 1;
int &k = i;

但是在我用 llvm 编译它之后(优化标志是 -O0 )我有下一个中间解释:

  %i = alloca i32, align 4                        ; <i32*> [#uses=2]
%k = alloca i32*, align 8 ; <i32**> [#uses=2]

这意味着 ik 不是别名(据我所知,%k 包含 %i 的地址)。如何制作别名的例子?

最佳答案

如果两个指针指向同一内存位置,则它们是别名。别名的概念只适用于指针——因为非指针值不能指向任何地方。所以在你的例子中 i 永远不能给任何东西起别名。

如果你想要一个别名示例,请看这个片段:

int i = 1;
int &j = i;
int &k = i;

jk 是别名。

我不确定您希望在 LLVM 端看到什么,尤其是 -O0。如果您期待 global alias ,这些是不相关的,用于为现有全局提供第二个名称。

关于c++ - 如何在 C++ 中创建别名(在汇编级别)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com