Активация записи в HLA - PullRequest
       15

Активация записи в HLA

1 голос
/ 10 декабря 2011

В 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 плохо себя ведет?

1 Ответ

2 голосов
/ 11 декабря 2011

Локальные переменные и параметры хранятся в стеке, а стеку выделяется фиксированные 32 бита за раз в 32-битном режиме. Даже если ваши параметры меньше 32 бит, они все равно занимают 32 бита в стеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...