Обработка строки с ариф. операциями оверлейными функциями - Assembler
Формулировка задачи:
Всем привет, ломаю голову не могу понять как решить данную задачу, если кто знает объясните пжлст:
Написать программу для обработки строк вида “A1 x1 A2 x2 … xN-1 AN”, где Ai – числа (i в диапазоне [1, N]), xi – одна из арифметических операций (для обработки арифметических операций сформировать оверлейные функции, в память одновременно может быть загружена только одна функция, загрузку функций оптимизировать).Решение задачи: «Обработка строки с ариф. операциями оверлейными функциями»
textual
Листинг программы
push ebp;сохраняем базу стека, вызывающего кода mov ebp,esp;стек теперь в базе sub esp,m;выделяем место под локальные переменные mov eax,[ebp+8];какой-то, там параметр из стека . . .;код подпрогаммы. mov esp,ebp;востанавливаем стек, уничтожая локальные переменные pop ebp;востанавливает базу стека, вызывающего кода ret n; зависит от стратегии(конвенции) передачи параметров и размера самих параметров
Объяснение кода листинга программы
Код, который вы предоставили, является фрагментом функции на языке Assembler, который обрабатывает строку с арифметическими операциями. Вот список действий, которые выполняются в этом коде:
- push ebp; сохраняет базу стека вызывающего кода
- mov ebp, esp; база стека теперь находится в стеке
- sub esp, m; выделяет место под локальные переменные
- mov eax, [ebp+8]; перемещает значение параметра из стека в eax
- ...; здесь выполняется код подпрограммы
- mov esp, ebp; восстанавливает стек, уничтожая локальные переменные
- pop ebp; восстанавливает базу стека вызывающего кода
- ret n; возвращает управление в вызывающую программу, при этом в стек добавляется n (количество параметров, передаваемых в функцию)
Обратите внимание, что действиями 3 и 4 выделяется место под локальные переменные и вводится одно из значений параметров функции в eax. Значение
m
используется для вычитания из стека, и его размер зависит от стратегии передачи параметров и размера самих параметров.