在一次面试中,有人问我,如果处理器只有 4 个 CPU 寄存器,我们是否可以在 CPU 寄存器中存储 5 个变量。我自信地回答“否”,然后面试官给了我一个奇怪的表情。
我的问题是,如果寄存器和变量的大小是1. 相同
2. 不同,那么是否可以在 CPU 寄存器中存储比实际 CPU 寄存器数量更多的变量
答案1
实际上你可以:
- 如果变量小于寄存器。在 x86 中,甚至有寄存器可以“查看”其他寄存器 - AX = AH + AL,等等
- (奇特)如果提到的 4 个寄存器是通用寄存器,并且可验证大小与寄存器相同 - 可能还有一个指令指针寄存器,因此像地址一样跳转到第五个变量 - 并且在崩溃之前的一段时间内,所有 5 个变量都会存储在寄存器中