Главная

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

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

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

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

ТОР 5 статей:

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

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

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

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

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

КАТЕГОРИИ:






Перед вызовом подпрограммы значения параметров заносятся в стек.




Пример. Вычисление среднего двух чисел: C=(A+B)/2

Push A

Push B

Push 0

Call Srednee

Pop C

Add esp,8

Srednee:

mov eax,[esp+8]

add eax,[esp+12]

Cdq

Mov ebx,2

Idiv ebx

mov [esp+4],eax

Ret

Передача параметров подпрограммы через стек

Достоинства метода:
– простота передачи параметров;
– неограниченное количество параметров,
в том числе и переменное;
– легко организовываются вложенные и рекурсивные вызовы функций

Недостатки метода:
– требуется внимательно следить за размещением параметров в стеке, особенно, когда он используется внутри подпрограммы;
– требуется выравнивать стек после
возврата из подпрограммы.

В языке программирования С используется комбинация двух способов передачи параметров:

– в подпрограмму параметры передаются через стек, причем справа-налево (т.е. первым в стеке сохраняется последний параметр, а первый параметр сохраняется последним);

– из подпрограммы результат возвращается в регистрах:
1 байт – в регистре AL;
2 байта – в регистре AX;
4 байта – в регистре EAX;
8 байт – в регистрах (EDX,EAX)

В функциях Windows API к этим соглашениям добавлено следующее:

– в функциях с фиксированным числом параметров (а таких подавляющее большинство) за выравнивание стека отвечает подпрограмма

Для этих целей используется
расширенный вариант команды RET

Формат команды

Ret число






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

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