Использование Prolog совместно с другими ЯП
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: сочинение ревизор, решебник 6
| Добавил(а) на сайт: Кулумбаев.
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата
Форматы объектных файлов в Win32.
Под Win32 используется 2 формата объектных файлов: OMF (объектно- модульный формат – используется, например, Borland C++ ) и COFF (Общий объектно-файловый формат, используется, например, Visual C++ ).
1. При использовании файла в формате OMF имя предиката должно совпадать с именем функции.
2. При использовании файла в формате COFF, к имени предиката добавляется знак подчеркивания, и после символа @ указывается количество байт, добавленных в стек (например, если предикат name имеет 2 целых аргумента, то он должен быть объявлен как _name@8 (см. таблицу 1)).
Установка указателя на стек.
Существует два способа установки указателя на стек: при объявлении функции и при ее вызове. Так сложилось, что Pascal устанавливает указатель при объявлении функции, а С – при вызове (см. таблицу 1).
| |Конвертируе| Порядок |Устанавливает |Необходимость|
| |т имена в |аргументов |указатель на |конвертироват|
| |верхний |прямой. |стек при |ь имена в |
| |регистр. | |объявлении. |формат COFF. |
|C |- |- |- | |
|pascal |+ |+ |+ | |
|stdcall | |+ |- |+ |
|syscall | |+ |+ |- |
Таблица 1: вызов модулей из VP.
Неавтоматическое обозначение внешних предикатов.
Идентификатор процедуры или функции в VP не обязательно должен совпадать с идентификатором во внешнем модуле. В этом случае объявление такого предиката имеет вид:
GLOBAL PREDICATES add(integer, integer, integer) – (i,o) language c as “_myadd@12”
Эквивалентность типов.
Большинство простых типов переменных в VP имеют эквиваленты в других языках программирования, однако размер резервируемой для них памяти может не совпадать (см. таблицу 2).
|Тип переменной |Размер (Win32). |
|char, byte |1 байт |
|short, word |2 байт |
|long, dword |4 байт |
|unsigned, integer |4 байт |
|Real |8 байт |
|Ref |4 байт |
Таблица 2: размер переменных в VP.
Обработка списков.
Ниже приведен пример программы, преобразующей список в массив, и затем вновь возвращающей данные в список.
Программа ListToArray на языке С преобразует список целых чисел в массив, записывает в стек элементы массива и возвращает количество элементов (массив и количество элементов передаются в программу как параметры).
Преобразование списка проходит в 2 этапа:
1. Просматривается список и находится количество элементов в нем.
2. Целые числа из списка заносятся в массив, состоящий из известного количества элементов.
/* Program lstar_p.pro */
project "lstar"
global domains ilist = integer*
global predicates inclist(ilist,ilist) - (i,o) language c
goal inclist([1,2,3,4,5,6,7],L), write(L).
/* Program lstar_c.c */
Рекомендуем скачать другие рефераты по теме: решебник мордкович, сочинение сказка.
Категории:
Предыдущая страница реферата | 1 2 3 4 | Следующая страница реферата