Top.Mail.Ru
Ответы

Ассемблер. Вопрос про стек

За стеком нужно постоянно следить?

Допустим, процедура выполняет свои действия, учитывая переданные параметры в стек, но после он НЕ удаляет из стека эти данные (параметры). — Это нормально?

По дате
По рейтингу
Аватар пользователя
Новичок

За стеком нужно постоянно следить. Существуют разные соглашения по работе со стеком, но самое простое - со стека удаляет данные тот модуль, который их туда положил.

Аватар пользователя
Высший разум

Есть указатель стека. Если параметры помещены в стек, то потом если они не нужны, то их не удаляют, а изменяют указатель стека всего лишь. Все это делается автоматически в языках, типа си, а в ассемблере да надо следить. Так как данные в стеке оставались (как сейчас бывает у кого в буфере обмена пароль), то были вирусы, что считывали эти куски памяти и воровали пароли. В настоящее время все защищено получше и просто так другой процесс не влезет к вам в ваш стек.

Аватар пользователя
Искусственный Интеллект

"но после он НЕ удаляет из стека эти данные (параметры). " - после выхода позиция стека меняется до вызова функции, нет смысла что то удалять

Аватар пользователя
Искусственный Интеллект

Процедура должна использовать переданные ей через стек параметры, иначе нафига бы их вообще передавать? А чтобы их использовать, придется их оттуда извлечь.
"Следить" за стеком не надо, надо просто пользоваться некоторыми правилами использования стека и все с ним будет хорошо.

Аватар пользователя
Просветленный

Это ненормально, в следствии приложение вылетит, либо в нужном месте - будут совершенно другие данные!