在HLA中,参数究竟是如何存储在激活记录中的?
我读过很多关于这个主题的文章,但问题是,当参数是“小于4字节”的数据类型时。
例如:
Procedure proc(VAL i:int32; VAL j:int16; VAL k:int16);@nodisplay;(注意,所有参数都是VAL)
由于在任何地方都没有提到,所有参数都分配(至少)一个4字节的块,所以我希望k在EBP+8上,j在EBP+10上,I在EBP+12上。
但根据一些stdout.puts的说法,情况并非如此。(至少在我的系统上没有)k在EBP+8上,j在EBP+12上,我在EBP+16上。
是否有任何资源指出,参数分配4字节块?还是我的HLA行为不当?
发布于 2011-12-11 12:28:50
局部变量和参数存储在堆栈上,堆栈在32位模式下一次分配一个固定的32位。即使您的参数小于32位,它们仍然占据堆栈上的32位。
https://stackoverflow.com/questions/8459374
复制相似问题