获取全局和静态变量的指令数量是多少? 我们知道在1个微处理器指令中获取本地或自动变量,有多少指令是全局的,并且提取了静态变量?它与从堆中获取动态变量的成本相同吗?或者少一点。
答案 0 :(得分:10)
答案可能是以下之一:
(a)数千,因为全局变量在当前未映射的内存中,因此访问它会导致异常,导致操作系统加载页面。
(b)很多,因为全局变量在一个动态库中,在访问变量之前必须加载和链接它。
(c)有几个,因为变量的地址必须从零件和/或重新定位信息中汇总。
(d)一,因为地址是根据指令中的立即数据和/或寄存器中的数据计算的,例如全局数据指针。
(e)归零,因为优化将变量保留在先前操作的寄存器中。
答案 1 :(得分:1)
在多少指令中提取全局和静态变量?
从零开始(已经缓存在寄存器中)到很多因素取决于很多因素。
我们知道本地或自动变量是在1中获取的 微处理器指令[...]
我们无法知道这一点,因为对于大于某些特定于实现的限制的大多数对象而言,情况并非如此。然后是C Interpreters ,其中该限制可能为0,所有加载需要数十个(如果不是数百个)指令。
答案 2 :(得分:0)
取决于计算机体系结构和上下文。 C规范没有指定这一点,它将取决于您使用的编译器和优化选项。