TURBO PASCAL |
Новости
|
Параметры-значенияПараметры-значения передаются по значению или по ссылке, в зависимости от их типа и размера. В общем случае, если пара- метр-значение занимает 1, 2 или 4 байта, то значение помещается непосредственно в стек. В противном случае в стек помещается ука- затель на значение, а процедура или функция копирует затем значе- ние в локальную ячейку памяти. В процессоре 8086 не поддерживаются байтовые инструкции РUSН и РОР, поэтому байтовые параметры всегда передаются в стеке, как слова. Младший байт слова содержит значение, а старший байт слова свободен (и неопределен). Значение или параметр целого типа передается как байт, слово или двойное слово. При этом используется такой же формат, как для представления переменной целого типа. (Для двойных слов старшее слово помещается в стек перед младшим словом, так что младшее слово размещается в более младших адресах.) Параметр символьного типа (Char) передается, как байт без знака. Параметр булевского типа (Boolean) передается, как байт со значением 0 или 1. Параметр перечислимого типа передается, как байт без знака, если нумерация не превышает 256. В противном случае он передает- ся, как слово без знака. Параметр вещественного типа (Real, значения с одинарной, двойной или повышенной точностью или сложного типа - Single, Double, Extended, Comp), передаются через стек как 4, 6, 8 или 10 байт. Это является исключением из того правила, что 1-, 2- и 4-байтовые значение передаются непосредственно в стеке. Параметр типа указатель передается в виде двойного слова (адрес сегмента помещается в стек перед смещением, так что часть, представляющая собой смещение, заканчивается в самом младшем ад- ресе). Параметр строкового типа передается, как указатель на значе- ние. Параметр множественного типа передается в виде байта (если границы элемента установлены в диапазоне от 0 до 7) или слова (если границы элемента установлены в диапазоне от 0 до 15). В противном случае оно передается в виде указателя на "неупакован- ное" множество длиной 32 байта. Массив или запись из 1, 2 или 4 байт помещается непосредс- твенно в стек. Другие массивы и записи передаются, как указатели на значения. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |