Оперативная память

         

Различие алгоритмических языков



Различие алгоритмических языков

Алгоритмические языки созданы и создаются для решения различных классов или категорий задач, поэтому они принципиально отличаются друг от друга. Здесь нас интересуют только те различия, которые относятся к действиям, связанным с вызовом процедур. Основная часть вызова процедуры в большинстве алгоритмических языков имеет следующий вид:

имя_процедуры (список_параметров)

Однако соответствующая ей последовательность команд зависит от конкретных особенностей компилятора. Прежде всего, в именах процедуры и параметров могут различаться или не различаться заглавные и строчные буквы. Далее, параметры могут записываться в стек в порядке их перечисления в списке или в обратном порядке. Количество параметров в списке может быть фиксированным или переменным. Наконец, параметры могут удаляться из стека при возврате из процедуры или в вызывающем модуле.

В табл. В.З перечислены особенности компиляторов, свойства которых может учитывать Макроассемблер при компиляции программных модулей.



С Sy St В F Р
Различаются строчные и заглавные Да Да Да Нет Нет Нет
Строчные буквы в именах преобразуются Нет Нет Нет Да Да Да
Параметры записываются в стек в порядке их перечисления в списке Нет Нет Нет Да Да Да
Параметры записываются в стек в обратном Да Да Да Нет Нет Нет
Параметры удаляются в процедуре при выполнении команды ret Нет Нет * Да Да Да
Параметры удаляются в вызывающем модуле (команда add sp, N) Да Да * Нет Нет Нет
Допустим список параметров переменной длины (тип varagr) Да Да Да Нет Нет Нет

В табл. В.З использованы следующие сокращения имен языков: С — Си, Sy — Syscall, St — Stdcall, В — Basic (Бейсик), F — Fortran (Фортран), Р — Pascal (Паскаль). Пояснять смысл имен Си, Бейсик, Фортран и Паскаль нет необходимости. Слова Syscall и Stdcall не соответствуют ни одному из конкретных языков, их точное назначение в HELP не описано, об этом можно только догадываться. Звездочки в столбце St обозначают, что место удаления параметров зависит от формы задания их списка. При обычной форме вызова их удаляет процедура, а если количество параметров переменное, то они удаляются в вызывающем модуле.

Для того чтобы Макроассемблер учитывал при компиляции программного модуля перечисленные в табл. В.З особенности, у директив MODEL, PROC и PROTO (см. ниже) появился новый спецификатор Langtype. Его допустимыми значениями являются имена С, Syscall, Stdcall, Basic, Fortran и Pascal. Имя должно быть указано явно, умолчаний не существует.

Замечание
Замечание
При описании названий языков в тексте книги мы также указываем русскую транскрипцию их названий, но в записи параметров на языке Макроассемблера используются только латинские имена.



Содержание раздела