Cтраница 3
Аргументы, переданные функции, локальны по отношению к данной функции. Изменения, внесенные в аргументы во время выполнения функции, не влияют на переменные, значения которых передаются в функцию. Этот способ передачи параметров известен как передача как значения, т.е. локальная копия каждого аргумента создается в самой функции. Такие локальные копии внешних переменных обрабатываются так же, как и любые другие локальные переменные функции. [31]
Возможно ли при использовании этого языка программирования обеспечить доступ по физическим адресам памяти и к устройствам. В зависимости от используемого окружения ( операционного) организация связи разноязыковых программных единиц может обеспечиваться либо с помощью трансляторов с различных языков программирования, либо с помощью компоновщика. В любом случае возникают проблемы, связанные с обеспечением необходимой вызывающей последовательности, со способами передачи параметров в подпрограммы и. [32]
В качестве параметров могут передаваться непосредственно отдельные операнды, необходимые для выполнения внутренней программы. Они могут задаваться с помощью числовых или текстовых констант, располагаемых вслед за командой ИП, или являться результатами выполнения внешней программы. В этом случае для записи операндов вслед за оператором ИП резервируются ячейки. Такой способ передачи параметров целесообразен при ограниченном числе передаваемых величин. Для записи во внешней программе результата выполнения внутренней программы в качестве параметров во внутреннюю программу передаются действительные адреса ячеек для результатов, задаваемые с помощью адресной константы. Во внутренней программе для работы с параметрами используются символические адреса ячеек, зарезервированных для их приема. [33]
Те элементы информации, которые должны быть доступны подпрограмме, чтобы она могла выполнить свою функцию, называются параметрами. Вызывающая процедура должна передать параметры подпрограмме. Согласно данному определению, адрес возврата, очевидно, является параметром, и мы уже обсудили, как он передается в подпрограмму командой JSR. Существует несколько способов передачи параметров, которые позволяют внутри подпрограммы определить, откуда брать данные и куда пересылать результаты. При программировании на языке ассемблера применение любого из них не вызовет никаких затруднений, поскольку в этом случае программист точно знает, где что происходит. Гораздо легче запутаться при программировании на языках высокого уровня, так как здесь механизм от нас скрыт и неизвестно, какой в действительности способ применяется. [34]
Структуры данных типа стека успешно применяются в некоторых областях системного программирования. Так, стеки используются при реализации алгоритмов вычисления выражений в компилляторах и интерпретаторах; в них сохраняются промежуточные результаты вычислений. В программах, написанных на языках высокого уровня ( например, на языке Паскаль) в имеющих блочную структуру, локальные данные и другая информация используются в стеке. В блочно-структурированных программах, написанных на языках высокого уровня, параметры процедур обычно передаются с использованием стека. Такой же способ передачи параметров иногда применяется и в программах, составленных на языке ассемблера. Кроме того, как будет отмечено ниже, в микропроцессорах применяется аппа-ратно реализуемый стек, в котором при обращении к подпрограммам и при обработке прерываний сохраняются адрес возврата и информация о состоянии программы. В программах на языке ассемблера в качестве значения указателя стека sp обычно используется абсолютный адрес ячейки памяти, а не индекс элемента массива. [35]