Содержание
- 2. Выполнение подпрограмм Команда №1 Команда №2 Команда №3 Команда №4 Команда №1 Команда №2 Команда №3
- 3. Команды процессора для работы с подпрограммами Вызов подпрограммы – CALL Возврат из подпрограммы – RET команды
- 4. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 5. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 6. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 7. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 8. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 9. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 10. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 11. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 12. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 13. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 14. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 15. Команды процессора для работы с подпрограммами 012 013 MOV … CALL 567 014 MOV … Программа
- 16. Где описываются программы MOV … Procedure: ADD … NEG … RET SUB … MULL … CALL
- 17. Где описываются программы MOV … JMP MainNext Procedure: ADD … NEG … RET MainNext: SUB …
- 18. Где описываются программы Перед основной программой После основной программы В отдельном модуле
- 19. Где описываются программы Перед основной программой .code Procedure: ; код подпрограммы RET Start: ; код основной
- 20. Где описываются программы После основной программы .code Start: ; код основной программы CALL Procedure ; код
- 21. Способы передачи параметров в подпрограммы Через регистры общего назначения Через общую память Через стек
- 22. Передача параметров через регистры общего назначения Factorial: MOV ECX, EAX MOV EBX, 2 MOV EAX, 1
- 23. Передача параметров через регистры общего назначения .data n dd 5 .data? result dd ? .code Factorial:
- 24. Передача параметров через регистры общего назначения Достоинства легко использовать большая скорость работы можно возвращать несколько значений
- 25. Передача параметров через регистры общего назначения Недостатки малое количество параметров трудности использования регистров в подпрограмме трудности
- 26. Передача параметров через общую память Factorial: MOV ECX, param MOV EBX, 2 MOV EAX, 1 Cycle:
- 27. Передача параметров через общую память .data n dd 5 .data? result dd ? param dd 2
- 28. Передача параметров через общую память Достоинства произвольное количество параметров переменное количество параметров регистры общего назначения свободны
- 29. Передача параметров через общую память Недостатки низкое быстродействие трудности рекурсивных вызовов
- 30. Передача параметров через стек Команды работы со стеком push – помещает в вершину стека некоторое значение
- 31. Передача параметров через стек Команды работы со стеком pusha – помещает в вершину стека значения всех
- 32. Передача параметров через стек Команды работы со стеком pushf – помещает в вершину стека значение регистра
- 33. Передача параметров через стек Стек: Позволяет обрабатывать только 32-разрядные числа Адрес вершины стека храниться в регистре
- 34. Передача параметров через стек Алгоритм работы команды push: add ESP, 4 mov [ESP],
- 35. Передача параметров через стек Алгоритм работы команды pop: mov , [ESP] sup ESP, 4
- 36. Передача параметров через стек Алгоритм работы команды call: add EIP, add ESP, 4 mov [ESP], EIP
- 37. Передача параметров через стек Алгоритм работы команды ret: mov EIP, [ESP] sub ESP, 4
- 38. Передача параметров через стек Factorial: MOV ECX, [ESP+8] MOV EBX, 2 MOV EAX, 1 Cycle: CMP
- 39. Передача параметров через стек .data n dd 5 .data? result dd ? .code PUSH n PUSH
- 40. Передача параметров через стек Достоинства произвольное количество параметров переменное количество параметров простота использования легкая организация рекурсии
- 41. Передача параметров через стек Недостатки трудно отслеживать состояние стека после вызова подпрограммы основная программа должна выравнивать
- 42. Подпрограммы в C параметры передаются через стек (при этом в стек параметры помещаются с конца) Результат
- 43. Функции Windows API после вызова функций с фиксированным числом параметров не нужно выравнивать стек
- 44. Передача параметров с использование STDCALL Factorial: MOV ECX, [ESP+4] MOV EBX, 2 MOV EAX, 1 Cycle:
- 45. Передача параметров с использование STDCALL .data n dd 5 .data? result dd ? .code PUSH n
- 46. Создание локальных переменных в стеке [ESP] – точка возврата [ESP + 4] – первый параметр функции
- 47. Создание локальных переменных в стеке SUB ESP, 4 [ESP] – локальная переменная [ESP + 4] –
- 48. Пролог функции PUSH EBP MOV EBP, ESP SUB ESP, 8 [EBP] – исходное значение EBP [EBP
- 50. Скачать презентацию