Ада-95. Компилятор GNAT

       

Проверка примера элементарной программы


Для исследования показанного примера элементарной программы, который демонстрирует использование встроенного ассемблера, можно воспользоваться способностью GNAT генерировать ассемблерный листинг программы.

Это позволяет убедиться в том, что мы реально получаем то, что и ожидаем получить.

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

Следует также заметить, что анализ генерируемого ассемблерного листинга может оказаться более еффективным способом отладки программы чем компиляция и запуск отладчика.

Для того, чтобы получить ассемблерный листинг программы необходимо выполнить следующую команду:

gcc -c -S -fomit-frame-pointer -gnatp 'nothing.adb'

Поясним значение используемых в этой команде опций:

-c выполнить только компиляцию исходного текста
-S  -  сгенерировать листинг ассемблера
-fomit-frame-pointer  -  не устанавливать отдельные кадры стека
-gnatp  -  не добавлять код проверки времени выполнения

Выполнение команды предоставляет хорошо читаемую версию ассемблерного кода.

Результирующий файл будет иметь такое же базовое имя, а расширение имени файла будет .s.

В случае файла с исходным текстом nothing.adb, результирующий файл с ассемблерным листингом будет nothing.s.

Содержимое этого файла будет иметь следующий вид:

.file "nothing.adb" gcc2_compiled.: ___gnu_compiled_ada: .text .align 4 .globl __ada_nothing __ada_nothing: #APP nop #NO_APP jmp L1 .align 2,0x90 L1: ret

Примечательно, что ассемблерный код, который непосредственно был введен в исходный текст примера программы, помещен между метками #APP и #NO_APP.



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