我在玩 C 时,我意识到,如果我声明了一堆寄存器变量,这些值不会被覆盖吗?从我从组装中可以看出,微处理器中没有大量寄存器,不足以满足我创建的需求。 C 如何保留所有值?

最佳答案

没有要求所有用 register 声明的变量都必须保存在 CPU 寄存器中。

这是 C 标准所说的:



引用:ISO C11 N1570 draft,6.7.1 第 6 段。请注意,它甚至没有提到 CPU 寄存器。

符合标准的编译器可以简单地忽略所有 register 关键字(除了对获取 register 对象的地址施加一些限制)。

实际上,大多数编译器只会在 CPU 寄存器中放置尽可能多的 register 变量。

事实上,现代优化编译器可能比大多数程序员更擅长寄存器分配——特别是因为他们可以在每次修改程序后重新编译程序时重新计算寄存器映射。

现在的普遍观点是 register 关键字没有提供太多好处。

关于c - 这么有限的寄存器,怎么会有这么多的寄存器变量呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52710927/

10-11 08:09
查看更多