最近我真的很喜欢硬件,一直在研究 CPU 的工作原理。为此,我一直在为组成的 CPU 架构制作汇编程序、反汇编程序和 vCPU。
我学到了很多东西,但有些东西我还是不明白。汇编程序/CPU 如何处理变量?
据我了解,局部变量被分配并存储在堆栈中。但是当 CPU 到达一条需要局部变量值的指令时,它怎么知道它在堆栈中的什么位置呢?汇编器不能在编译时输入地址,对吧?
我不太了解全局变量,除非您在.data
部分(x86 asm)中有它们。当 CPU 到达需要全局变量值的指令时,它如何知道它在内存中的位置?不是每次运行程序都在不同的地方吗?那么汇编器不能给它一个地址,对吧?
我一直在到处寻找答案,但还没有找到。