Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Получение исполнимого файла




Пример.

Компиляция программы на языке Borland С

Пример.

/* Основная программа вызывает внешнюю функцию _hello_c, */

/* написанную на Borland C */

 

global predicates

_message (string) – (i) language c

_hello_c – language c

goal

_message ("Hello from Turbo Prolog!"),

_hello_c.

clauses

_message (S):-

makewindow (13, 7, 7, "", 10, 10, 3, 50),

write (S),

readchar (_),

removewindow.

 

Все функции должны быть скомпилированы в obj-файлы с использованием опции компилятора. Так, для среды ВС++ 2.0 эта директива выглядит следующим образом:

bcc.exe -c -ml имя_файла (модель памяти large).

К глобальному имени функции необходимо добавить символы «_0», например: имя_функции_0().

 

/* Функция _hello_c, написанная на языке Borland C */

/*и вызываемая из Пролог-программы */

void hello_c_0 ()

{

message_0 ("Hello from Turbo C!");

}

domains

integerlist = integer*

global predicates

_message (integer) – (i) language c

_hello_c (integer) – (i) language c

predicates

write_list (integerlist)

int_list (integerlist)

read_list (integerlist)

add_list (integerlist, integerlist, integerlist)

read_list1 (integerlist, integerlist, string)

goal

makewindow (1, 14, 13, "Привет, это Пролог!", 0, 0, 25, 80),

clearwindow,

int_list (List),

read_list (List),

removewindow (1, 0).

clauses

int_list ([]).

add_list ([], L, L).

add_list ([N | L1], L2, [N | L3]):-

add_list (L1, L2, L3).

read_list1 (X1, X2, S):- str_int (S, Z),

add_list (X1, [Z], X2),!.

read_list1 (X1, X2, S):-

write_list (X1),

fail.

read_list (List):-

write("Введите элемент списка "),

readln (S),

read_list1 (List, L, S),

read_list (L).

write_list ([]):- nl.

write_list([H|T]):-

_hello_c (H).

_message(N):-

makewindow (13, 30, 30, "Сообщение", 5, 5, 15, 50),

write(N),

readchar (_),

removewindow.

 

Первый этап процесса получения исполнимого файла представляет собой компиляцию исходного текста программы, отличающуюся от работы интерпретатора тем, что в ее результате создается объектный файл. Для рассматриваемого примера − это файлы Пролога hello_pr.obj и hello_pr.sym, а также файл на языке Borland C − hello_c.obj. Компилятор выполняет преобразование исходной программы в программу на языке машинных команд.

Следующий этап − это компоновка, т.е. собственно создание исполнимого файла, заключающийся в объединении в общем коде всех необходимых объектных файлов и подстыковке требуемых библиотек. В рассматриваемом примере объектные модули на языках Пролог и Borland C включаются в исполнимый файл outfile.exe.

В дистрибутиве Пролог роль компоновщика выполняет специальная программа связи или так называемая TLINK-программа.

Вызов TLINK-программы из командной строки ИС Турбо-Пролог для рассматриваемого примера имеет следующий вид:

Tlink init.obj hello_pr.obj hello_c.obj hello_pr.sym, outfile,, prolog

где init.obj – стандартный файл Турбо-Пролог,

hello_pr.obj, hello_pr.sym – файлы, получаемые после компиляции hello_pr.pro,

outfile.exe – результирующий исполнимый файл.




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 514; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.