Ассемблер. Вопрос про стек
За стеком нужно постоянно следить?
Допустим, процедура выполняет свои действия, учитывая переданные параметры в стек, но после он НЕ удаляет из стека эти данные (параметры). — Это нормально?
За стеком нужно постоянно следить. Существуют разные соглашения по работе со стеком, но самое простое - со стека удаляет данные тот модуль, который их туда положил.
Есть указатель стека. Если параметры помещены в стек, то потом если они не нужны, то их не удаляют, а изменяют указатель стека всего лишь. Все это делается автоматически в языках, типа си, а в ассемблере да надо следить. Так как данные в стеке оставались (как сейчас бывает у кого в буфере обмена пароль), то были вирусы, что считывали эти куски памяти и воровали пароли. В настоящее время все защищено получше и просто так другой процесс не влезет к вам в ваш стек.
"но после он НЕ удаляет из стека эти данные (параметры). " - после выхода позиция стека меняется до вызова функции, нет смысла что то удалять
Процедура должна использовать переданные ей через стек параметры, иначе нафига бы их вообще передавать? А чтобы их использовать, придется их оттуда извлечь.
"Следить" за стеком не надо, надо просто пользоваться некоторыми правилами использования стека и все с ним будет хорошо.
Это ненормально, в следствии приложение вылетит, либо в нужном месте - будут совершенно другие данные!