0

在多少条指令中获取全局变量和静态变量?我们知道在 1 条微处理器指令中获取局部变量或自动变量,在多少条指令中获取全局变量和静态变量?它与从堆中获取动态变量的成本相同吗?或少一点。

4

3 回答 3

10

答案可能是以下之一:

(a) 数千,因为全局变量位于当前未映射的内存中,因此访问它会导致异常,从而导致操作系统加载页面。

(b) 很多,因为全局变量位于动态库中,必须先加载和链接,然后才能访问该变量。

(c) 几个,因为变量的地址必须由部分和/或重定位信息组合而成。

(d) 一,因为地址是从指令中的立即数和/或寄存器中已经存在的数据(例如全局数据指针)中计算出来的。

(e) 零,因为优化已将变量保留在先前操作的寄存器中。

于 2013-07-10T20:48:50.397 回答
1

在多少条指令中获取全局变量和静态变量?

从零(已经缓存在寄存器中)到许多取决于许多因素。

正如我们所知,在 1 条微处理器指令中获取局部变量或自动变量 [...]

我们不知道这一点,因为对于大多数大于某些特定于实现的限制的对象来说,情况并非如此。然后是 C解释器,其限制可能为 0,所有加载都需要数十条甚至数百条指令。

于 2013-07-10T20:49:16.890 回答
0

取决于计算机体系结构和上下文。C 规范没有指定这一点,这取决于您使用的编译器和优化选项。

于 2013-07-10T20:48:36.903 回答