|
|
|
|
Передача по адресу
При передаче по адресу вызываемая программа получает только адрес данных. Доступ к данным осуществляется путем использования этого адреса. Имеется
несколько непосредственных преимуществ данного способа. Первое состоит в том, что если данные не расположены в различных сегментах, то все адреса могут
содержаться в одном 16-битовом значении, являющимся соглашением по использованию регистра или стека. Второе преимущество заключается в том, что
программа становится более общей, поскольку указание другого адреса создает новый набор данных. Третье преимущество состоит в том, что вызываемая
программа может непосредственно манипулировать данными для возврата значения в то же самое место вызывающей программы, которое содержало первоначальное
значение. Если данные, подлежащие передаче, не размещены в памяти (т.е. являются непосредственными данными), иногда могут возникнуть проблемы. В этих
случаях (или, если обнаружено их простое несоответствие для передачи всех требуемых адресов в стек) может быть использован тип смешанного параметра:
блок аргументов.
Блок аргументов или параметров является специальной формой передачи по адресу. В этом случае требуемые аргументы содержатся в непрерывном участке
памяти. Однако, в отличие от передачи через общую область памяти, вызывающая процедура не имеет полных сведений об этом блоке. При вызове процедуры
в качестве параметра ей передается адрес этого блока. Хотя может оказаться неудобным размещать все требуемые аргументы в блоке, но это дает возможность
избежать необходимости размещения всех этих значений в стеке. Если блок уже существует для других целей, то передача параметров через блок аргументов
имеет еще больший смысл.
|
|