流程如何跟踪其局部变量

克里斯蒂安·布旺斯(Christian Bouwense)

据我所知,当进程分配局部变量时,它是通过将它们作为堆栈推送到内存中来实现的,但仍通过使用堆栈指针的偏移量来引用它们(作为该线程的随机存储器)来访问它们(从该线程开始)将堆栈用于局部变量的想法是什么?)。

但是,如何知道哪些变量具有什么偏移量?我在以正确的方式思考吗?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

局部变量的偏移量作为常量“放入”机器代码中。到编译器完成时,程序中称为局部变量的内容将替换为编译器分配的固定内存偏移量。

假设您声明了三个局部变量:

char a[8];
int b;
short c;

编译器将偏移量分配给以下变量:a处于offset处0b处于offset处8,并且c处于offset处12假设您的代码可以b += c编译器将此转换为如下所示的代码块:

LOAD    @(SP+8)
ADD     @(SP+12)
STORE   @(SP+8)

唯一更改的值是SP(堆栈指针)。所有偏移量都是数字常量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章