"Адское" программирование Ada-95 -Компилятор GNAT




Глава 3. Доступность средств разработки


    Доступность средств разработки
    Доступность средств разработки Практическое использование любого языка программирования требует наличия соответствующих средств разработки, и язык программирования Ада в этом случае не является ис...
    Система Ада-компилятора GNAT
    Система Ада-компилятора GNAT Система Ада-компилятора GNAT (сокращение от G NU N ew York University A da T ranslator ) одновременно является компилятором и системой времени выполнения для Ada95, ко...
    Установка GNAT
    Установка GNAT Как уже говорилось, GNAT является частью проекта GCC.Команда gcc, сама по себе, не является компилятором.Это программа которая определяет тип исходного текста и затем осуществляет з...
    Установка GNAT на Windows
    Установка GNAT на Windows Компилятор GNAT, который собран для работы на аппаратной платформе Intel x86 под управлением операционной системой Windows находится в подкаталоге "winnt".Как говорится в...
    Установка GNAT на Linux
    Установка GNAT на Linux При установке GNAT на Linux следует учитывать, что в системе возможна совместная одновременная установка нескольких различных версий gcc.Для выбора определенной версии gcc,...
    Установка бинарных файлов от ACT
    Установка бинарных файлов от ACT При установке бинарных файлов от ACT следует учитывать, что они построены с учетом определенной версии библиотеки языка C.Для того, чтобы определить какая версия б...
    Установка RPM-пакетов ALT
    Установка RPM-пакетов ALT Кроме стандартного дистрибутива GNAT от ACT , существует альтернативный дистрибутив GNAT от ALT ( Ada for Linux Team , WEB-страничка проекта доступна по адресу: " http://...
    Общие правила наименования файлов
    Общие правила наименования файлов Не зависимо от используемой операционной системы (Microsoft Windows или Linux) компилятор GNAT достаточно активно использует суффиксы имен файлов (иначе, расширен...
    Использование других имен файлов
    Использование других имен файлов В большинстве случаев следование принимаемым по умолчанию правилам именования файлов позволяет компилятору без каких-либо дополнительных указаний, самостоятельно о...
    Альтернативные схемы именования
    Альтернативные схемы именования Ранее мы рассмотрели использование директивы компилятора Source_File_Name, которая позволяет использовать произвольные имена для отдельных файлов с исходными текста...
    Сборка первой программы
    Сборка первой программы Используя любой текстовый редактор вашей системы создайте файл hello.adb, который содержит следующую программу на языке Ада: with Ada.Text_IO; use Ada.Text_IO; procedure He...
    Три этапа сборки проекта
    Три этапа сборки проекта Весь процесс построения проекта осуществляется в три этапа, которые утилита gnatmake выполняет автоматически: Компиляция ( compiling ): утилита gnatmake осуществляет прове...
    Опции компилятора
    Опции компилятора Программа gcc (или gnatgcc, для дистрибутива ALT ) принимает следующие опции командной строки, которые позволяют непосредственно управлять процессом компиляции: -b target - Компи...
    Проверка ошибок во время выполнения программы
    . Проверка ошибок во время выполнения программы Ада предоставляет обширные возможности для проверки ошибок во время выполнения программы.По умолчанию, GNAT отключает некоторые проверки для повышен...
    Проверка ошибок в исходном тексте без компиляции
    . Проверка ошибок в исходном тексте без компиляции Если вы используете версию GNAT 0p, то для проверки ошибок в исходном тексте программы, без выполнения фактической компиляции исходных текстов, м...
    Обнаружение большого количества ошибок при компиляции
    . Обнаружение большого количества ошибок при компиляции В случае обнаружения очень большого количества ошибок компиляции в исходном тексте, может оказаться полезным перенаправление вывода сообщени...
    Связывание Ада-программы
    Связывание Ада-программы При использовании таких языков программирования как C и C++, как только выполнена компиляция файлов с исходными текстами остается только один шаг до построения результирую...
    Опции редактора связей gnatbind
    . Опции редактора связей gnatbind Программа gnatbind является редактором связей ( binder ) системы компилятора GNAT.Она принимает следующие опции командной строки, которые позволяют непосредственн...
    Правила поиска файлов для gnatbind
    . Правила поиска файлов для gnatbind Программа редактора связей gnatbind принимает имя ALI -файла как аргумент и нуждается в указании файлов с исходными текстами и других ALI -файлов для проверки...
    Компоновщик gnatlink
    . Компоновщик gnatlink Компоновщик gnatlink используется для компоновки Ада-программ и построения исполняемых файлов.Эта простая программа вызывает компоновщик системы (через команду gcc/gnatgcc)...
    Опции компоновщика gnatlink
    . Опции компоновщика gnatlink Следующий список перечисляет опции которые допускается использовать с компоновщиком gnatlink: -A - Указывает gnatlink, что сгенерированный редактором связей gnatbind...
    Утилита gnatmake
    Утилита gnatmake Как уже было показано ранее, утилита gnatmake используется для компиляции Ада-программ.Например: gnatmake main.adb Она осуществляет проверку всех пакетов от которых зависит програ...
    Опции gnatmake
    . Опции gnatmake В команде запуска утилиты gnatmake могут быть использованы различные опции, которые управляют процессом сборки проекта.Следующий список перечисляет опции, которые допускается испо...
    Указание путей поиска файлов для gnatmake
    . Указание путей поиска файлов для gnatmake Кроме показанных ранее опций, утилита gnatmake поддерживает опции указания путей поиска для файлов с исходными текстами и библиотечных файлов: -aI dir -...
    Управление режимами gnatmake
    . Управление режимами gnatmake Опции управления режимами gnatmake позволяют использовать опции командной строки, которые будет непосредственно переданы компилятору, редактору связей или компоновщи...
    Примечания для командной строки gnatmake
    . Примечания для командной строки gnatmake Здесь предоставляются некоторые дополнтельные сведения, которые могут быть полезны при работе с командной строкой для утилиты gnatmake. Если утилита gnat...
    Связывание и компоновка, утилита gnatbl
    Связывание и компоновка, утилита gnatbl Бывают случаи, когда необходимо выполнить сборку проекта части которого написаны на других языках программирования.В таких ситуациях, компиляция выполняется...
    Модели компиляции GNAT и C/C++
    Модели компиляции GNAT и C/C++ Модель компиляции GNAT очень похожа на модель компиляции, которая традиционна для языков программирования C/C++.Файлы спецификации могут рассматриваться как соответс...
    Модель компиляции GNAT и общая согласованная Ада-библиотека
    Модель компиляции GNAT и общая согласованная Ада-библиотека Эта информация может оказаться полезной для тех программистов, которые ранее использовали какой-либо другой Ада-компилятор использующий...
    Директивы конфигурации
    Директивы конфигурации Согласно "Руководства по языку программирования Ада 95" существует набор директив компилятора, которые предназначены для управления конфигурацией среды компиляции Ада-систем...
    Обработка директив конфигурации
    Обработка директив конфигурации Директивы конфигурации могут присутствовать в начале исходного текста компилируемого модуля, оказывая, таким образом, воздействие только на соответствующий компилир...
    Файлы директив конфигурации
    Файлы директив конфигурации В системе компилятора GNAT, среда компиляции определяется текущим каталогом на момент запуска команды компиляции.Этот текущий каталог используется для поиска файла с им...
    Уменьшение затрат времени с помощью утилиты gnatstub
    Уменьшение затрат времени с помощью утилиты gnatstub Начиная с версии 1p, система компилятора GNAT предусматривает утилиту gnatstub.Утилита gnatstub может быть использована для построения файла пр...
    Утилита перекрестных ссылок gnatxref
    Утилита перекрестных ссылок gnatxref Утилита gnatxref (или gnatf для GNAT 0) - это утилита которая генерирует индексы для каждого появления идентификатора в программе, включая все идентификаторы и...
    Оценка "мертвого" кода с помощью утилиты gnatelim
    Оценка "мертвого" кода с помощью утилиты gnatelim Утилита gnatelim, основанная на ASIS ( A da S emantic I nterface S pecification ), может быть использована для поиска неиспользуемых программой ча...
    Отслеживание состояния стека и обнаружение утечек памяти во время выполнения программы
    Отслеживание состояния стека и обнаружение утечек памяти во время выполнения программы Начиная с версии 2 GNAT предусматривает средства обратной трассировки, которые позволяют получить информацию...
    Утилита gnatmem
    Утилита gnatmem Для мониторинга программы, которая выполняется под управлением отладчика gdb (поставляемого вместе с GNAT), может быть использована утилита gnatmem (начиная с версии 2 GNAT).После...
    Средства GNAT.Debug_Pools
    Средства GNAT.Debug_Pools Использование Unchecked_Deallocation и/или Unchecked_Conversion может легко привести к некорректным ссылкам памяти.От проблем, порождаемых подобными ссылками, достаточно...
    Условная компиляция с помощью препроцессора gnatprep
    Условная компиляция с помощью препроцессора gnatprep Хотя разработчики Ады решили не включать в язык директивы поддержки препроцессора, подобные используемым в языке программирования C, GNAT преду...
    Утилиты gnatpsys и gnatpsta
    Утилиты gnatpsys и gnatpsta Множество описаний стандартных пакетов System и Standard зависят от конкретной реализации системы и используемой платформы.Исходный текст пакета Standard не доступен, а...
    Произвольное именование файлов, утилита gnatname
    Произвольное именование файлов, утилита gnatname Как уже указывалось, компилятор должен обладать возможностью определить имя файла с исходным текстом компилируемого модуля. При использовании прини...
    Оптимизация проекта
    Оптимизация проекта Оптимизация является настройкой программы, которая позволяет уменьшить размер результирующего исполняемого файла или увеличить скорость выполнения программы на компьютере опред...
    Опции оптимизации компилятора
    Опции оптимизации компилятора Существует несколько опций командной строки компилятора которые могут быть использованы для общей оптимизации программы: -O0 - Отсутствие оптимизации. Выполняет самую...
    Средства оптимизации GNAT, используемые в исходном тексте
    Средства оптимизации GNAT, используемые в исходном тексте Существует несколько директив компилятора, которые позволяют изменять размер и скорость выполнения программы: Директива Описание pragma Pa...
    Оптимизация для специфического типа процессора
    Оптимизация для специфического типа процессора Для GCC версий x существует две основные опции оптимизации, которые основаны на специфическом типе процессора. Это указано в руководстве по GCC : -mn...
    GNAT и библиотеки
    GNAT и библиотеки Эта глава предоставляет информацию, которая может оказаться полезной при построении и использовании библиотек с системой компилятора GNAT.Кроме того, здесь описывается как можно...
    Создание Ада-библиотеки
    Создание Ада-библиотеки В среде системы компилятора GNAT любая библиотека состоиз из двух компонентов: Файлы с исходными текстами. Скомпилированный код и ALI-файлы ( A da L ibrary I nformation fil...
    Установка Ада-библиотеки
    Установка Ада-библиотеки Установка какой-либо библиотеки в системе компилятора GNAT осуществляется копированием файлов, которые составляют библиотеку, в какое-либо определенное место на диске.Суще...
    Использование Ада-библиотеки
    Использование Ада-библиотеки При использовании Ада-библиотеки необходимо указывать ее как в пути поиска файлов с исходными текстами, так и в пути поиска объектных файлов.Например, вы можете исполь...
    Перекомпиляция библиотеки времени выполнения GNAT
    Перекомпиляция библиотеки времени выполнения GNAT Бывают случаи когда возникает необходимость в самостоятельной перекомпиляции библиотеки времени выполнения GNAT.Для таких случаев предусматриваетс...
    Средства управления проектами в системе GNAT
    Средства управления проектами в системе GNAT Эта глава описывает средства управления проектами, которые присутствуют в системе компилятора GNAT ( GNAT Project Manager ).Основой этих средств являет...
    Файлы проектов GNAT
    Файлы проектов GNAT Проект является определенным набором значений для перечисленных выше свойств. Установки этих значений могут быть определены в файле проекта , который является обычным текстовым...
    Примеры файлов проектов
    Примеры файлов проектов Рассмотрим несколько простых примеров, которые демонстрируют основные свойства средств управления проектами GNAT и базовую структуру файлов проектов....
    Различные опции сборки и каталоги выходных результатов для общих исходных файлов
    Различные опции сборки и каталоги выходных результатов для общих исходных файлов Предположим, что файлами с исходными текстами на Аде являются следующие файлы: "pack.ads", "pack.adb" и "proc.adb"....
    Использование внешних переменных
    Использование внешних переменных Вместо написания различных самостоятельных файлов проектов, для получения отладочной версии и версии реализации, можно написать единственный файл проекта, который...
    Импорт других проектов
    Импорт других проектов Какой-либо компилируемый модуль расположенный в файле с исходным текстом, который принадлежит одному проекту, может зависить от компилируемых модулей расположенных в файлах...
    Расширение существующего проекта
    Расширение существующего проекта Общим случаем для больших программных систем является наличие множества реализаций общего интерфейса. В терминах Ады, это представляется как множество версий тела...
    Синтаксис файлов проектов
    Синтаксис файлов проектов Рассмотрим структуру и синтаксис файлов проектов.Проект может быть независимым проектом , который полностью описывается в одном единственным файле проекта.В независимом п...
    Базовый синтаксис
    Базовый синтаксис Как видно в показанных ранее примерах, файлы проектов обладают Ада-подобным синтаксисом. Минимальный файл проекта имеет следующий вид: project Empty is end Empty; Здесь, идентифи...
    Пакеты
    Пакеты Файл проекта может содержать пакеты . Именем пакета должен быть один из предопределенных идентификаторов (не зависит от регистра символов), кроме того, пакет с указанным именем может упомин...
    Выражения
    Выражения Какое-либо выражение является или строковым выражением , или выражением списка строк . Какое-либо строковое выражение является или простым строковым выражением , или составным строковым...
    Строковые типы
    Строковые типы Значение строковой переменной может быть ограничено списком строковых литералов. Ограниченный список строковых литералов представляется как описание строкового типа . Примером описа...
    Переменные
    Переменные Переменная может быть описана на уровне файла проекта или внутри пакета файла проекта. Примерами описания переменных может служить следующее: This_OS : OS := external ("OS"); -- описани...
    Атрибуты
    Атрибуты Проект (и его пакеты) может иметь атрибуты , которые описывают свойства проекта. Одни атрибуты имеют значения, которыми являются строки, другие атрибуты имеют значения, которыми являются...
    Атрибуты как ассоциативные массивы
    Атрибуты как ассоциативные массивы Некоторые атрибуты описываются как ассоциативные массивы . Ассоциативный массив можно рассматривать как функцию, которая принимает в качестве параметра строку, и...
    Конструкция "case"
    Конструкция " case " Конструкция case используется внутри файла проекта с целью обеспечения условного поведения. Типичным примером может служить следующее: project MyProj is type OS_Type is ("Linu...
    Исходные, объектные и исполняемые файлы проекта
    Исходные, объектные и исполняемые файлы проекта Каждый проект обладает единственным каталогом для сохранения объектных файлов, и одним или более каталогом с исходными файлами.Каталоги с исходными...
    Каталог объектных файлов
    Каталог объектных файлов Каталог для сохранения объектных файлов проекта является каталогом в котором будут сохраняться результаты работы компилятора (файлы "ALI" и файлы объектных модулей), котор...
    Каталог исполняемых файлов
    Каталог исполняемых файлов Каталогом для сохранения исполняемых файлов проекта является каталог, который содержит исполняемые файлы головных подпрограмм проекта. Каталог для сохранения исполняемых...
    Каталоги исходных файлов
    Каталоги исходных файлов Каталоги с исходными файлами проекта могут быть указаны с помощью атрибута файла проекта Source_Dirs . Значением этого атрибута является список строк. При отсутствии явног...
    Имена исходных файлов
    Имена исходных файлов В проекте, который содержит исходные файлы, имена исходных файлов могут быть указаны с помощью атрибутов Source_Files (список строк) и/или Source_List_File (строка). Имена ис...
    Импорт проектов
    Импорт проектов Какой-либо непосредственный исходный файл проекта P может зависеть от исходных файлов, которые не являются непосредственными исходными файлами проекта P и не содержатся в предопред...
    Расширение проекта
    Расширение проекта Иногда, при разработке большой программной системы, необходимо использование модифицированных версий некоторых исходных файлов без изменения оригинальных версий исходных файлов....
    Обращение к внешним переменным в файлах проектов
    Обращение к внешним переменным в файлах проектов Файл проекта может содержать обращения к внешним переменным. Такие обращения называют внешними ссылками . Внешняя переменная может быть определена...
    Пакеты файлов проектов
    Пакеты файлов проектов Пакет является свойством файла проекта с помощью которого обеспечивается возможность описания установок для индивидуальных инструментов, которые интегрированы со средствами...
    Переменные импортируемых проектов
    Переменные импортируемых проектов Какой-либо атрибут или переменная, которые были описаны в импортируемом проекте или проекте-предке, могут быть использованы в выражениях, которые используются в и...
    Схемы именования файлов
    0 Схемы именования файлов Бывают случаи когда необходимо осуществить перенос программной системы, которая была разработана в среде какого-либо Ада-компилятора, в среду компилятора GNAT.При этом, и...
    Проекты библиотек
    Проекты библиотек Проект библиотеки являются проектом объектный код которого помещается в какую-либо библиотеку (следует отметить, что в настоящий момент такая возможность не поддерживается для вс...
    Опции командной строки, относящиеся к файлам проектов
    2 Опции командной строки, относящиеся к файлам проектов В системе компилятора GNAT, инструментальные средства, которые поддерживают файлы проектов, могут использовать в командной строке следующие...
    Утилита gnatmake и файлы проектов
    Утилита gnatmake и файлы проектов Рассмотрим два вопроса, которые касаются утилиты gnatmake и файлов проектов: описание опций для утилиты gnatmake и всех инструментальных средств, запуск которых о...
    Управляющая программа gnat и файлы проектов
    Управляющая программа gnat и файлы проектов Кроме утилиты gnatmake, существуют другие инструментальные средства системы GNAT, которые ориентированы на обработку проектов.К таким инструментальным с...
    Расширенный пример
    4 Расширенный пример Предположим, что у нас есть две программы prog1 и prog2 , исходные файлы которых расположены в соответствующих каталогах.Предположим также, что нам необходимо осуществлять сбо...
    Диаграмма полного синтаксиса файлов проектов
    5 Диаграмма полного синтаксиса файлов проектов В заключение обсуждения средств управления проектами системы компилятора GNAT, приведем диаграмму полного синтаксиса файлов проектов, которая непосре...
    Построение больших проектов
    Построение больших проектов Утилита gnatmake, которая входит в состав системы компилятора GNAT, является прекрасным инструментом для построения небольших проектов.Однако при построении больших про...
    Использование утилиты GNU make
    Использование утилиты GNU make Прежде чем рассматривать какие-либо примеры, следует заметить, что все приведенные далее примеры относятся непосредственно к утилите GNU make.Хотя make является стан...
    Общие сведения о GNU make
    Общие сведения о GNU make В процессе своей работы утилита GNU make осуществляет интерпретацию набора правил, которые сохранены в файле управления сборкой проекта с именем Makefile.Правила описываю...
    Использование утилиты gnatmake в файлах Makefile
    Использование утилиты gnatmake в файлах Makefile Управление построением сложного проекта удобно осуществлять с помощью комбинированного использования утилит GNU make и gnatmake.Например, возможно...
    Автоматическое создание списка каталогов
    Автоматическое создание списка каталогов Для большинства файлов Makefile, возникает необходимость перечисления списка каталогов и сохранения этого списка в какой-либо переменной.Для небольших прое...
    Генерация опций командной строки для gnatmake
    Генерация опций командной строки для gnatmake После создания списка каталогов, как было описано выше, можно легко сгенерировать аргументы командной строки, которые будут переданы утилите gnatmake....
    Преодоление ограничения на длину командной строки
    Преодоление ограничения на длину командной строки Многие операционные системы ограничивают длину командной строки.Это может вызвать некоторые трудности при работе над большим проектом, поскольку з...
    Переносимость в UNIX, пакеты GNU Automake и GNU Autoconf
    Переносимость в UNIX, пакеты GNU Automake и GNU Autoconf Если вы используете систему Linux и желаете создать проект, который будет выполняться на различных платформах UNIX, а не только в Linux, то...
    Использование встроенного ассемблера
    Использование встроенного ассемблера Использование встроенного ассемблера вместе с компилятором GNAT в реальности не является сложностью и позволяет генерировать очень эффективный код.Однако, для...
    Пакет System.Machine_Code
    Пакет System.Machine_Code Ада-программист не часто нуждается в непосредственном использовании ассемблера. Однако, когда возникает ситуация при которой необходимо использовать ассемблер, тогда дейс...
    Различия в использовании внешнего и встроенного ассемблера
    Различия в использовании внешнего и встроенного ассемблера Справедливо заметить, что всегда существует возможность скомпоновать программу на языке Ада с внешней подпрограммой на ассемблере.Однако,...
    Особенности реализации компилятора GNAT
    Особенности реализации компилятора GNAT Поскольку компилятор GNAT является частью семейства компиляторов GCC, то он использует средства встроенного ассемблера, которые характерны для этого семейст...
    Особенности используемого ассемблера
    Особенности используемого ассемблера Для тех кто мигрирует с платформы PC/MS, вид ассемблера, используемого в GNAT, может сначала показаться обескураживающим.Причина в том, что ассемблер, который...
    Именование регистров процессора
    Именование регистров процессора При использовании соглашений Intel, именование регистров процессора осуществляется следующим образом: mov eax, 4 В случае синтаксиса ATT, перед именем регистра проц...
    Порядок следования операндов источника и приемника
    Порядок следования операндов источника и приемника В действительности, приведенный выше пример не будет успешно ассемблироваться с GNAT.В то время как соглашения Intel устанавливают порядок следов...
    Значения констант
    Значения констант Это может показаться странным, но попытка ассемблирования показанного ранее кода также окажется безуспешной.Причина в том, что синтаксис ATT подразумевает, что перед непосредстве...
    Шестнадцатеричные значения
    Шестнадцатеричные значения При использовании соглашений Intel, для загрузки в регистр шестнадцатеричного значения можно было написать: mov eax, 1EAh Увы, в этом случае синтаксис ATT также отличает...
    Суффиксы размера
    Суффиксы размера Ассемблер Intel пытается определить размер инструкции пересылки анализируя размеры операндов. Таким образом, код: mov ax, 10 будет пересылать 16-битное слово в регистр ax.Ассембле...
    Загрузка содержимого памяти
    Загрузка содержимого памяти Ранее мы рассмотрели инструкцию вида: movl $my_var, %eax которая позволяет загрузить регистр eax значением адреса переменной my_var.А как можно загрузить в регистр eax...
    Косвенная адресация
    Косвенная адресация Теперь нам известно как загрузить значение адреса и содержимое памяти.Но как загрузить содержимое памяти на которое указывает адрес расположенный в памяти или регистре?Синтакси...
    Инструкции повторения
    Инструкции повторения При использовании синтаксиса Intel, инструкции повторения записывались в одной строке кода. Так, для пересылки строки, можно было написать: rep stos В случае синтаксиса ATT,...
    Использование пакета System.Machine_Code
    Использование пакета System.Machine_Code После рассмотрения общих правил написания инструкций ассемблера, можно сконцентрировать внимание на интеграции кода ассемблера с Ада-программой GNAT....
    Пример элементарной программы
    Пример элементарной программы Пожалуй, более элементарную программу придумать не возможно: with System.Machine_Code; use System.Machine_Code; procedure Nothing is begin Asm ("nop"); end Nothing; Н...
    Проверка примера элементарной программы
    Проверка примера элементарной программы Для исследования показанного примера элементарной программы, который демонстрирует использование встроенного ассемблера, можно воспользоваться способностью...
    Поиск ошибок в коде ассемблера
    Поиск ошибок в коде ассемблера Часто, при совершении ошибки в ассемблерном коде (подобной использованию не правильного модификатора размера или оператора для какой-либо инструкции) GNAT сообщает о...
    Более реальный пример
    Более реальный пример Более реальным и интересным примером может служить пример, который позволет увидеть содержимое регистра флагов процессора: with Interfaces; use Interfaces; with Ada.Text_IO;...
    Параметры вывода
    Параметры вывода При желании сохранить содержиме регистра eax в какой-либо переменной, первым желанием будет написать что-нибудь подобное следующему: procedure Getflags is Eax : Unsigned_32; begin...
    Ограничения
    Ограничения Строка ограничений, состоящая из символов, указывает компилятору на то, как он должен управлять переменной, которую мы ему предоставляем.Это значит, что мы указываем компилятору то, ка...
    Использование самостоятельно описываемых типов
    Использование самостоятельно описываемых типов Параметры вывода позволяют использовать не только предопределенные типы.Они также позволяют использовать типы которые самостоятельно описаны программ...
    Параметры ввода
    Параметры ввода До сих пор мы рассматривали программы на встроенном ассемблере, которые способны осуществлять только вывод информации.Однако также часто возникает необходимость в осуществлении вво...
    Встроенная подстановка (inline) для кода на встроенном ассемблере
    Встроенная подстановка ( inline ) для кода на встроенном ассемблере При использовании маленьких функций, затраты на выполнение вызова могут оказаться больше чем затраты на выполнение непосредствен...
    "Затирание" содержимого регистров
    0 "Затирание" содержимого регистров До настоящего момента времени, мы явно указывали компилятору (посредством параметров ввода и вывода) какие регистры процессора мы используем, и генератор кода к...
    Изменяемые инструкции
    Изменяемые инструкции Иногда, оптимизатор компилятора может перехитрить самого себя.Например, когда инструкция ассемблера с параметром ввода расположена внутри цикла, он может переместить загрузку...
    Синтаксис GNAT
    Синтаксис GNAT В заключение обсуждения использования средств встроенного ассемблера представим полный синтаксис инструкции встроенного ассемблера GNAT, который непосредственно позаимствован из док...
    Директивы компилятора для отладки
    Директивы компилятора для отладки GNAT предусматривает две директивы компилятора, которые могут быть полезны при отладке программ: Директива Описание pragma Assert ( условие ); - Вставить условие...
    Получение расширенной информации компилятора
    Получение расширенной информации компилятора Опция командной строки компилятора -gnatG позволяет получить информацию о том как GNAT интерпретирует исходный текст после его первоначального анализа....
    Использование отладчика GNU GDB
    Использование отладчика GNU GDB Начиная с версии 1, компилятор GNAT поставляется вместе с работающим в режиме командной строки отладчиком GNU GDB.Следует заметить, что при программировании на язык...
    Общие сведения об отладчике GNU GDB
    Общие сведения об отладчике GNU GDB Отладчик GDB является платформенно независимым отладчиком общего назначения.Он может быть использован для отладки программ, которые написаны на разных языках пр...
    Знакомство с командами GDB
    Знакомство с командами GDB Отладчик GDB поддерживает обширный набор команд.Руководство "Отладка с помощтью GDB" ( Debugging with GDB ) содержит полное описание всех команд и предоставляет большое...
    Использование выражений Ады
    Использование выражений Ады Отладчик GDB обеспечивает поддержку для достаточно обширного подмножества синтаксиса выражений Ады.Основой философии дизайна этого подмножества является следующее: GDB...
    Вызов подпрограмм определяемых пользователем
    Вызов подпрограмм определяемых пользователем Одной из важных особенностей отладчика GDB является его способность вызывать в процессе отладки подпрограммы, определяемые пользователем.Это можно выпо...
    Исключения и точки прерывания
    Исключения и точки прерывания С помощью отладчика GDB можно устанавливать точки прерывания, в которых будет осуществляться приостановка выполнения программы, когда ее выполнение будет возбуждать у...
    Задачи Ады
    Задачи Ады При работе с задачами Ады, GDB позволяет использовать следующие команды:info tasks Эта команда отображает список текущих задач Ады, который имеет вид подобный следующему: @leftskip=0cm...
    Отладка настраиваемых модулей
    Отладка настраиваемых модулей При конкретизации настраиваемого модуля GNAT всегда использует расширение кода.Это подразумевает, что при каждой конкретизации осуществляется копирование оригинальног...
    Ограничение возможностей языка
    Ограничение возможностей языка Существует несколько директив компилятора, которые позволяют накладывать ограничения на использование в программе некоторых возможностей языка.Такие директивы компил...
    Некорректное завершение работы компилятора
    Некорректное завершение работы компилятора В редких случаях, при компиляции программ, которые содержат серьезные ошибки в синтаксисе и/или в семантике, работа GNAT может быть завершена как результ...
    Получение внутренней отладочной информации
    Получение внутренней отладочной информации Большинство компиляторов обладают внутренними опциями и режимами отладки. В этом смысле GNAT не является исключением, более того, все внутренние опции и...
    Соглашения по наименованию исходных файлов GNAT
    Соглашения по наименованию исходных файлов GNAT При анализе внутреннего устройства системы GNAT, может оказаться полезным следующее краткое описание соглашений по именованию исходных файлов систем...








Начало    



Книжный магазин