-3
A
回答
2
大多数编译器都支持生成汇编语言输出的标志,例如-S
或/S
。您可以检查此代码,以查看您的编译器是否将给定变量存储在给定点的寄存器中。
没有类型保证适合注册。事实上,一些基于堆栈的机器,包括Andrew Tannenbaum教科书中JVM的硬件实现,根本没有明确的寄存器。但是,int
的大小通常与寄存器的大小相同(64位环境定义为int
和long
,因为向后兼容性是32位的例外情况),因此指针通常保存一个机器地址,因此通常与寄存器的大小相同(分段内存模型,例如16位x86,其中地址适合两个寄存器,是例外),并且size_t
和ptrdiff_t
保存数组索引,因此通常与寄存器大小相同(x32目标,它具有64位代码但是一个32位内存空间,是一个例外)。大多数CPU都有浮点寄存器,每个浮点寄存器可以容纳一个double
来对其进行数学运算,但有些则不是。
如果你想要的是快速便携式代码,你最好的选择是使用int_fast16_t
和uint_fast32_t
这些类型从<stdint.h>
。这些保证是通常最快的尺寸,至少足够宽。而在正常的目标上,这将是一个机器寄存器的大小。
相关问题
- 1. 在CPU寄存器中分配寄存器变量的标准?
- 2. C:试图将变量存储在特定的XMM寄存器中
- 3. CPU和内存(值,寄存器)
- 4. XMM寄存器存储
- 5. 将涉及CPU寄存器的指令转换为存储器指令
- 6. 将两个x86 32位寄存器存储到128位xmm寄存器中
- 7. 将变量存储在变量中
- 8. 68k汇编:CPU是否在中断时存储状态寄存器?
- 9. 一个变量应该存储在一个寄存器中多久?
- 10. 为什么我们需要建议一个变量存储在寄存器中?
- 11. 将值存储在MIPS的HI和LO寄存器中
- 12. 将enum常量存储在变量中
- 13. 如何将两个寄存器相乘并将它们存储在不同的寄存器中?
- 14. C++ CPU寄存器的使用
- 15. perf-report显示CPU寄存器的值
- 16. 存储在浏览器会话存储器VS内存变量
- 17. 汇编局部变量和寄存器
- 18. 访问一个SSE寄存器变量
- 19. 测量CPU /存储器消耗
- 20. 将整个列存储在存储过程中的变量中
- 21. VIM:将外部命令的输出存储到寄存器中
- 22. 将值存储在ECX寄存器中并使用较低的寄存器CL来移位该值?
- 23. 将函数存储在变量中
- 24. 将sql用户存储在变量中
- 25. 将异常存储在变量中
- 26. Python:将输出存储在变量中
- 27. 将img src存储在php变量中
- 28. 如何将$存储在PHP变量中?
- 29. 将MySqlDataReader存储在变量中
- 30. 将xpathResult.snapshotItem存储在本地变量中?
'register'可以被编译器忽略,并且会被许多现代编译器用于分配寄存器。今天只有不被允许采用地址的副作用是唯一相关的用例。其余的:你的问题太广泛了。阅读CPU如何工作,**特定** CPU的参考手册以及您的平台的ABI。 – Olaf