|
3
|
| Erel Segal-Halevi · 技术社区 · 8 年前 |
|
1
7
TL;DR公司
:在未优化的代码中,CLANG++为返回值留出4个字节
因为您正在使用
在这种情况下
这个 C++11 standard 表示:
在CLANG++版本中,您使用的是未优化的64位代码,默认情况下,返回值0位于
问题是,您的测试代码有点过于琐碎,无法看到这个默认返回值是如何发挥作用的。以下是一个更好的示例:
此代码有两个退出显式退出点,通过
可以看到,编译器生成了一个设置返回值的公共退出点(
EAX公司
)从堆栈地址
如果使用选项构建代码
|
|
|
EE18 · C中字节序与尺寸组装转换的关系 2 年前 |
|
|
MagicRacoon · TSO和存储转发保证 2 年前 |
|
|
ugo_capeto · gcc使用“lea”而不是“add”` 2 年前 |
|
|
Locke · GCC和Clang奇怪的不必要堆栈使用[重复] 2 年前 |