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

时间:2013-07-10 20:42:43

标签: c

获取全局和静态变量的指令数量是多少? 我们知道在1个微处理器指令中获取本地或自动变量,有多少指令是全局的,并且提取了静态变量?它与从堆中获取动态变量的成本相同吗?或者少一点。

3 个答案:

答案 0 :(得分:10)

答案可能是以下之一:

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

(b)很多,因为全局变量在一个动态库中,在访问变量之前必须加载和链接它。

(c)有几个,因为变量的地址必须从零件和/或重新定位信息中汇总。

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

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

答案 1 :(得分:1)

  

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

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

  

我们知道本地或自动变量是在1中获取的   微处理器指令[...]

我们无法知道这一点,因为对于大于某些特定于实现的限制的大多数对象而言,情况并非如此。然后是C Interpreters ,其中该限制可能为0,所有加载需要数十个(如果不是数百个)指令。

答案 2 :(得分:0)

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