|
Однако, из-за причин обеспечения совместимости это не реко-
мендуется. Вместо этого более предпочтительным способом передачи
параметров является структура, показанная в листинге 2-1. Исполь-
зование этой структуры, заимствованной большинством языков высо-
кого уровня, поможет при разработке мобильных, многократно ис-
пользуемых программ. Эти программы могут быть собраны в
"инструментальный набор", который необходимо использовать во мно-
гих местах для облегчения программирования и повышения производи-
тельности работы.
При возврате вызываемой программы параметры, которые были по-
мещены в стек, теперь должны быть удалены. Вызывающая программа
может удалить параметры либо извлечением из стека (путем исполь-
зования инструкции POP), либо просто добавлением хранимых пара-
метров в регистр SP, например, по инструкции add SP,N, где N
представляет собой количество байтов, занимаемых параметрами.
Этот способ, показанный в листинге 2-1, эффективно урезает стек в
первоначальное положение. Альтернативно ответственность за очист-
ку стека может быть назначена вызываемой программе путем исполь-
зования инструкции RET N, где N опять количество байтов, занимае-
мое параметрами. При любом способе N равно количеству помещенных
с помощью инструкции PUSH слов, умноженное на 2.
Различие между этими двумя способами состоит в том, что при
использовании инструкции RET N программа должна вызываться в
- 2-11 -
точности с правильным количеством параметров. Если имеется не N
байтов параметров, то инструкция RET N неправильно выровняет стек
и произойдет авария системы. Напротив, если стек очищает вызываю-
щая программа путем использования инструкции add SP,N, то каждый
вызов в целевую программу может передавать различное количество
параметров.
Листинг 2-1. Передача параметров в стек
-----------------------------------------------------------------
; Вызывающая процедура
...
|