HLA中的激活记录

时间:2011-12-10 19:49:04

标签: assembly record activation

在HLA中,参数究竟是如何存储在激活记录中的?

我已经详细阅读了这个主题,但是 问题是,当参数是“小于4字节”的任何数据类型时。

例如:

Procedure proc(VAL i:int32; VAL j:int16; VAL k:int16);@nodisplay;

(注意,所有参数都是VAL)

因为在任何地方都没有提到,所有参数都分配(至少)一个4字节的块, 我希望k在EBP + 8上,j在EBP + 10上,我在EBP + 12上。

但根据一些stdout.puts,事实并非如此。 (至少不在我的系统上) k在EBP + 8上,j在EBP + 12上,i在EBP + 16上。

是否有任何资源指出,参数是否分配4个字节的块? 或者我的HLA行为不端?

1 个答案:

答案 0 :(得分:2)

局部变量和参数存储在堆栈中,堆栈在32位模式下一次分配一个固定的32位。即使您的参数小于32位,它们仍然占用堆栈上的32位。