c - 如何知道编译器在c中使用的访问说明符

标签 c cpu-registers access-specifier

有没有办法知道编译器在 c 中使用的访问说明符。 例如- 在寄存器变量的情况下,这完全取决于编译器来决定变量的访问说明符是自动还是注册。有没有办法动态地知道编译器选择了什么访问说明符?

最佳答案

我们正在混淆语言的规范级别和机器代码中程序的实现。这里的两个术语“注册”只是松散相关。

关键字 register 的措辞令人困惑,用词不当。 register 仅表示不允许您获取此类变量的地址。无论您的编译器是否在堆栈上实现变量并直接对其寻址或将其存储在 CPU 寄存器中,都不是您可以依赖的稳定因素。它会随着编译器版本和优化级别的不同而变化。

正如其他人所说,如果您对微优化感兴趣,您可以阅读汇编程序以了解特定的编译,但总的来说,您甚至不需要担心。

关于c - 如何知道编译器在c中使用的访问说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993993/

相关文章:

不同字节序分支中的代码覆盖率

assembly - 如何使绘图程序在 200x320 像素(而不是 200x255)组件上工作?

x86 - EBX 寄存器用于内存访问的这种模式是什么?

java - write方法如何与对象的clone方法类似?

c - 简单的 STRUCT 程序初学者问题

c - 在C语言中,数组的大小在运行时确定?

java - 为什么我们不能为类指定默认访问修饰符

c++ - 错误 : expected a declaration

python - python 中是否有与 MATLAB 函数 bsxfun 等效的函数?

llvm - 通过修改LLVM Backend来Clobber X86寄存器