Сохранение регистров

В СП для языков Pascal и C фирм MicroSoft и Borland для компьютеров типа IBM PC подпрограммы обязаны сохранять со­держимое регистров CS, DS, SS, SP, BP. В других СП требования могут отличаться.

Соглашение о связях языка Pascal (сводка)

Преобразование имен

Значащая длина идентификатора может быть от 8 до 250 символов, умолчание – 32. Для изменения служит команда Options+Compiler+Source.

Строчные буквы преобразуются в прописные.

Передача и возврат управления

Тип подпрограмм (near или far) и, следовательно, команд call и ret зависит от двух факторов:

· обращение к внешним подпрограммам всегда осуществляется как к far подпрограммам;

· если включен режим Force Far Calls (команда Options+Compiler), то и подпрограммы внутри единицы трансляции рассматрива­ются как far, в противном случае такие подпрограммы рассмат­риваются как near.

Передача и возврат данных

Параметры передаются в стеке. Помещаются в стек в порядке, соответствующем порядку записи в тексте подпрограммы, т.е. по­следний в тексте будет на самом верху стека.

По умолчанию параметры передаются по значению, при нали­чии модификатора var – по ссылке, при этом размер указателя – far.

Скалярные и структурные данные, помещающиеся в байт, воз­вращаются в AL, помещающиеся в слово – в AX, помещающиеся в двойное слово – в паре DX:AX. Табл. 4 поясняет соответствие типов возвращаемых данных языка Pascal и регистров процес­сора.

Таблица 4

Тип функции Регистр(ы)
Boolean, Char, ShortInt, Byte AL
Integer, Word AX
LongInt DX – старшее слово, AX – младшее
Pointer DX – сегмент, AX – смещение
String · в вызывающей подпрограмме резервируется память под воз­вращаемую строку; · в стек на самый низ (т.е. первым параметром) помещается адрес этой памяти; · вызываемая подпрограмма помещает по указанному адресу результат; · при возврате стек чистится от всех параметров, кроме этого адреса, удалением этого адреса должна заниматься вызы­вающая подпрограмма.

Многомерные массивы располагаются в памяти таким образом, что быстрее изменяется последний индекс.

При передаче по значению массива, записи или строки компи­лятор формирует код, который обеспечивает передачу через стек far-адреса, выделение необходимой памяти в подпрограмме и ко­пирование туда параметра.