|
|
|
|
Возврат значений в регистрах
Простейшим способом возврата значения является способ возврата значения в регистре. Как и при передаче параметров, эта опция может быть ограничена
количеством доступных регистров и размером возвращаемых данных. Положительным моментом этого способа возврата является то, что данные легко доступны и
могут быть легко проверены или использованы.
Возврат значения в регистре имеет смысл для часто вызываемых функций. Это не требует специальной установки и предварительной подготовки буферов и
пр. Большинство функций MS-DOS возвращает свои значения этим способом. Однако, если все функции в программе возвращают свои данные через регистры, то
придется столкнуться с задачей "большой бухгалтерии и перемешивания". Кроме этого, в связи с тем, что регистры являются элементами, в которых
производится большинство вычислений, налицо жесткая конкуренция по их использованию.
Чаще всего регистры должны использоваться для небольших, часто используемых вызываемых программ, возвращающих немного значений и для программ,
возвращаемые значения которых должны немедленно подвергаться вычислениям. Одним из примеров этого случая могла бы быть функция чтения символьных
значений и преобразования их в числовые значения.
Большинство языков высокого уровня для возвращаемых значений используют различные технические приемы. Так, для возврата байтового значения или
значения, длиной в слово, обычно используется регистр AX. Если необходимо возвратить значение, длиной в двойное слово, такое как указатель far
(далекий), то младшее значащее слово (или часть смещения) возвращается в регистре AX, а старшее значащее слово (или часть сегмента) возвращается в
регистре DX. В тех случаях, когда в вызывающую программу необходимо возвратить более двух слов, данные помещаются в буфер памяти, а указатель на
этот буфер возвращается в вызывающую программу. Способы управления этим указателем зависят от конкретного языка.
|
|