Мониторинг обменных курсов валют
18c0693f

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


Для исследования показанного примера элементарной программы, который демонстрирует использование встроенного ассемблера, можно воспользоваться способностью 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.






Самый выгодный курс обмена валюты