在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 上,而 i 在 EBP+16 上。
是否有任何资源指出,参数分配 4 字节块?还是我的 HLA 行为不端?