显然,编译器必须存储变量 x 是 unsigned int 还是 signed int、float 或其他什么的信息,但是在哪里以及如何存储?
是否有某种查找表?我在内存中的哪个位置找到它,在可执行文件的哪个部分?
最佳答案
它是隐含的,在编译器选择的指令中。
例如,如果地址 18 包含一个 float
,编译器可能会使用一条指令从地址 18 加载一个浮点寄存器。如果它在地址 20 的邻居包含一个 int
,编译器可能会从前一个地址 + 2 加载一个整数寄存器。
如前所述,编译器有一个符号表,因此它知道所有变量的位置。这允许它选择正确的指令。但是您不能简单地从单个指令中导出该符号表的内容。
关于c++ - 编译器如何以及在内存中的什么位置存储有关变量类型的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279568/