Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






В качестве операнда должен указываться общий размер (в байтах) всех параметров, помещенных в стек.




Действие команды

pop EIP; вернуться в исходную точку add ESP, число; выровнять стек на «число» байт

Набор соглашений по вызову функций в Win32 API называется STDCALL

Пример. Вычисление среднего двух чисел с использованием соглашения STDCALL

Push B

Push A

Call Srednee

Mov C,eax

Srednee:

mov eax,[esp+8]

add eax,[esp+4]

Cdq

Mov ebx,2

Idiv ebx

Ret 8

Одним из часто используемым применением стека является хранение локальных переменных, для чего в стеке организуется окно (кадр) локальных переменных.

Если обращаться к локальным переменным с помощью регистра ESP, требуется пересчитывать смещения параметров и переменных при любом его изменении.

В таких случаях используется регистр EBP – указатель кадра стека, значение которого остается неизменным. Следовательно, смещения параметров и переменных также фиксируются.

Типичный пролог в подпрограмме:

Push ebp; сохраняем исходное значение ebp

Mov ebp,esp; фиксируем текущий указатель

sub esp, размер; делаем «окно» заданного размера

В результате получаем следующую конфигурацию стека:

Содержимое стека:

[EBP] – исходное значение EBP

[EBP+4] – адрес точки возврата

[EBP+8] – первый параметр

[EBP+12] – второй параметр

...

[EBP–4] – первая переменная

[EBP–8] – вторая переменная

...

Типичный эпилог в подпрограмме:

mov esp,ebp; удаляем «окно» в стеке






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных