【发布时间】:2010-10-14 20:15:17
【问题描述】:
我想知道一个指针是否可以指向一个 cpu 寄存器,因为在这种情况下它可能不会,在可能的情况下使用引用而不是指针会给编译器做一些优化的机会,因为被引用的对象可能驻留在某个寄存器中,但是指针指向的对象可能不会。
【问题讨论】:
-
完全依赖于底层机器架构,但对于大多数现代机器,尤其是 x86,通常答案是“否”。
-
如果你明确要求一个变量在一个寄存器中,那么你不能获取它的地址。
-
如您所说,优化将由编译器执行。特定编译器的编写者确实(应该)知道指针是否可以指向它编译到的体系结构上的寄存器。
-
嗯,有点奇怪,这里没有人提到 volatile 关键字。它提供的少数保证之一,它应该是主题。也许我在这里遗漏了一些东西。
-
指针是一个 C/C++ 概念,它不存在于硬件中。而且寄存器只存在于硬件中,C/C++对寄存器一无所知。所以不,指针永远不能指向 CPU 寄存器,因为它们存在于完全独立的世界中。 :)
标签: c++ optimization pointers reference