小编wol*_*rse的帖子

指向 C++ 寄存器的指针是否合法?

假设 C++ 编译器为 CPU 寄存器未进行内存映射的体系结构编译了代码。并且假设同一个编译器为 CPU 寄存器保留了一些指针值。

例如,如果编译器无论出于何种原因(例如优化原因),为变量使用寄存器分配(不是谈论 register 关键字),并且我们打印对该变量的引用的值,编译器将返回其中一个保留的“地址值”。

该编译器会被视为符合标准吗?

从我所能收集到的(我还没有阅读整个事情 -工作草案,编程语言 C++ 标准),我怀疑该标准没有提到 RAM 内存或操作内存之类的东西,它定义了自己的内存模型相反,指针作为地址的表示(可能是错误的)。

现在由于寄存器也是一种内存形式,我可以想象将寄存器视为内存模型一部分的实现可能是合法的。

c++ cpu-registers memory-mapping language-lawyer

30
推荐指数
2
解决办法
3586
查看次数

C ++中复制省略背后的基本原理是什么?

C++ 标准允许(要求)编译器优化对复制构造函数的调用(在某些情况下)的原因是什么,即使它可能包含可观察到的副作用?

如果我没记错的话,“好像”规则已经允许编译器优化掉不必要的代码,只要生成的程序模拟标准中定义的抽象机器的可观察行为。

制定例外规则的动机是什么?它不会在语言中造成不一致吗?方便(或必要)吗?

c++ design-rationale compiler-optimization copy-elision as-if

2
推荐指数
1
解决办法
115
查看次数