Соглашения о связях

Вообще говоря, для каждого транслятора с языка высокого уровня существует свое собственное соглашение о связях между подпрограммами. То есть соглашение о том, в какие машинные команды и конструкции языка ассемблера транслируются опера­торы языка высокого уровня, служащие для описания и вызова подпрограмм.

Понятие «соглашение о связях» включает следующие аспекты: преобразование имен подпрограмм и переменных, передача и воз­врат управления, передача и возврат данных, преобразование дан­ных при передаче и возврате, трансляция и компоновка подпро­грамм в единую программу.

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

Под термином «преобразование имен» понимаются правила формирования имен транслятором при создании объектного мо­дуля. Необходимо учитывать, по меньшей мере, следующие мо­менты:

· допустимое количество символов в имени в программе на ЯП и в ОМ;

· различаются ли прописные и строчные буквы в программе на ЯП и в ОМ;

· не добавляет ли что-нибудь транслятор от себя к именам в ОМ.

Длина внешнего имени (т.е. имени «видимого» компоновщи­ком) зависит от конкретной СП, как правило, это 32 символа.

В языке C в именах различаются прописные и строчные буквы, в языке Pascal, напротив, не различаются. Как правило, трансля­торы с этих языков поступают соответствующим образом при формировании имен в ОМ. В частности, Pascal-трансляторы преобразуют строчные буквы в прописные.

С-трансляторы, как правило, включают символ подчеркивания в начало каждого имени в ОМ.

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

При рассмотрении передачи и возврата управления и данных необходимо учитывать следующие моменты:

· тип команд вызова и возврата;

· способы передачи параметров – по ссылке, по значению, для передачи по ссылке – тип адресации, передача сложных типов данных – массивов и структур;

· доступ к данным в подпрограмме;

· при передаче параметров через стек, в каком порядке помещать параметры в стек и какая из программ ответственна за очистку стека;

· как располагаются многомерные массивы в памяти;

· выполняется ли выравнивание полей структур на границу слова, двойного слова и т.п.;

· СП могут осуществлять обязательное преобразование данных некоторых типов при использовании их в качестве фактиче­ских параметров;

· как представляются сложные типы данных: структуры, за­писи и объекты (C++), записи, записи с вариантами, множе­ства (Pascal).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: