变量地址在内存中的存储

storage of address of variable in memory

当我查看 load/store 架构时,寄存器中的变量存储在特定地址下的内存中。编译器如何知道变量存储在内存中的哪个地址下以加载它?他必须在某个地方有一个 table。如果是这样,table 存储在哪里?

编译器生成一个 symbol table 程序变量保存的位置。此 table 的基址索引为零,地址是相对于此基址的。 (此 table 是 exe 文件的一部分)。

操作系统在执行exe文件时,会将符号table加载到内存中,然后为其分配一个新的基地址。 (取决于它在哪里可以找到一个空的地方来加载文件)。然后所有地址都是相对于这个新的基地址计算的。实际上基地址是加上它们在符号table中的地址(通常数据段寄存器保存这个基地址)