Кросс-средства разработки программ — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Кросс-средства разработки программ

2022-10-05 30
Кросс-средства разработки программ 0.00 из 5.00 0 оценок
Заказать работу

Структура взаимодействия программ NMSDK

Следующий рисунок иллюстрирует структуру взаимодействия программ NMSDK.

Рис. П-1‑1 Схема взаимодействия программ NMSDK.

Структура каталогов NMSDK

Для удобства работы с программами NMSDK используется предопределенная структура каталогов программного обеспечения. Она описывается следующим деревом каталогов (см. Рис. П-1‑2):

Рис. П-1‑2 Структура каталогов типового комплекта поставки NMSDK.

 

Содержимое каталогов зависит от комплектации поставляемого NMSDK (см. документе по инсталляции для конкретно поставленной программы из состава указанного в документе «ЮФКВ.30048-01. Комплекты поставки кросс-средств разработки программ.»

Переменная окружения NEURO

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

Пример содержимого при типовой установке:

«C:\Program Files (x86)\Module\NM SDK 3.01»

Помимо установки переменной окружения при инсталляции необходимо добавить путь к каталогу BIN, поскольку в нем содержатся исполняемые программы из состава NMSDK:

PATH=%PATH%; D:\NEURO\BIN;

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

 


2   Компилятор Си++

Введение

В состав NMSDK входят два компилятора С++ для процессоров серии 1879ВМ – компилятор С++ (см. 2.2) и оптимизирующий компилятор С++ (см. 2.3). В этом разделе собраны данные о поддерживаемой компиляторами версии языка Си++, краткая справка о составе компилятора, опциях управления компилятором, приводится пример компиляции простейшей программы.

 

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

2.2 О компиляторе Си++ для процессоров серии 1879ВМ

Компилятор Си++ для процессоров серии 1879ВМ представляет собой полноценный компилятор, транслирующий Си/Си++ программы в исходные тексты на языке ассемблера для процессоров серии 1879ВМ. Далее описаны ключевые характеристики данного компилятора:

· Компилятор Си++ поддерживает определение языка Си++, описанное в предварительном стандарте ANSI X3J16/95-0029 за исключением шаблонов.

· Рассматриваемая версия компилятора Си++ предназначена для работы в среде Windows 95/98 или Windows NT 4.0 в качестве консольного приложения, управляемого с помощью опций командной строки.

· Компилятор поставляется вместе с библиотекой времени исполнения libc.lib. Библиотека включает в себя функции для time-keeping, динамического распределения памяти, преобразования данных и арифметических операций и функций с плавающей точкой. К ограничениям, налагаемым отсутствием операционной системы, относятся файловый ввод-вывод, функции локализации и работы с датой/временем, обработки сигналов операционной системы, а также функции взаимодействия с ОС (в частности, system()). Взаимодействие с окружением: <stdlib.h>. Файловый ввод-вывод: <stdio.h> Обработка сигналов: <signal.h> Поддержка локализации, мультибайт символы: <locale.h> Средства поддержки определения даты и времени: <time.h>

· Компилятор поддерживает несегментированную (линейную) модель организации памяти. Ограничений на размер объектного кода нет. Пространство памяти ограничено только аппаратной конфигурацией.

· В комплект компилятора входит программная оболочка, которая позволяет пользователю исполнять все шаги трансляции программы в исполняемый код для процессора с помощью одной команды.

· Компилятор поддерживает соглашения о непосредственных вызовах, позволяющих пользователю свободно писать ассемблерные и Си/Си++ функции, вызывающие друг друга.

· Executable and Linkable File (ELF) формат позволяют пользователю определить системную карту памяти во время компоновки. Таким образом, повышается эффективность работы, так как пользователю предоставляется возможность компоновать Си/Си++ коды и данные в отдельные области памяти.

· DWARF Формат отладочной информации обеспечивает полную поддержку отладки на уровне входного языка.

· Данные типов char, short, int, float занимают 32 бита; данные типов long и double занимают 64 бита.

Компилятор имеет интерфейс командной строки и запускается на исполнение при помощи драйвера компонентов nmcc, который представляет собой программное средство, предназначенное для объединения нескольких программ NMSDK под единым пользовательским интерфейсом.

 

Примечание Подпрограммы, составляющие непосредственно компилятор Си++ не предназначены для индивидуального запуска пользователем. Осуществлять компиляцию рекомендуется только через nmcc. В настоящее время данный компилятор считается устаревшим и по-умолчанию используется оптимизирующий компилятор (см. п.2.3). Если же вы хотите использовать именно данный компилятор, задайте драйверу компонент nmcc ключ – Ox.

 

Процесс компиляции разбит на три стадии:

· предобработку, которую выполняет препроцессор;

· разбор входного файла и генерацию промежуточного файла, выполняемые компилятором переднего плана;

· порождение ассемблерного представления программы, осуществляемого генератором кода.

Стадии компиляции выполняются в приведенной выше последовательности, результатом компиляции является файл на языке ассемблера, адекватный соответствующему файлу на языке Си++.

Положение компилятора Си++ в общей структуре NMSDK приведено на Рис. 2‑1.

Рис. 2‑1 Положение компилятора Си++ в общей структуре NMSDK.

2.3 Об оптимизирующем компиляторе Си++ для процессоров серии 1879ВМ

Оптимизирующий компилятор Си++ для процессоров серии 1879ВМ представляет собой новую программу в составе NMDSK - полноценный компилятор, транслирующий Си/Си++ программы в исходные тексты на языке ассемблера для процессоров серии 1879ВМ. Оптимизирующий компилятор используется вместо компилятора С++. Далее описаны ключевые характеристики данного компилятора:

· Более строгое следование стандарту С++, включая шаблоны;

· Продвинутые алгоритмы оптимизации.

Оптимизирующий компилятор имеет интерфейс командной строки и запускается на исполнение при помощи драйвера компонентов nmcc, далее в данном документе описывается именно такой, опосредованный способ его вызова. Однако, его можно вызывать и непосредственно из командной строки по имени nmcpp. В отличие от nmcc, на выходе nmcpp порождает ассемблерный файл, ассемблирование и линковку в данном случае пользователь должен инициировать сам. Из плюсов – доступно более тонкое управление компиляцией. Для получения краткой информации о параметрах вызова, используйте команду «nmcpp -?».

Табл. 2‑3 Параметры командной строки оптимизирующего компилятора.

Параметры Описание
-OPT0, -OPT1, -OPT2 Управление оптимизацией. OPT2 соответствует самой агрессивной оптимизации, OPT0– минимальной. Значение по-умолчанию OPT0
-inline Разрешить встраивание функций (function inlining optimization)
-debug Указание генерировать отладочную информацию.
-except Включить обработку исключений для пользовательского кода.
-rtti Включить поддержку runtime type information для пользовательского кода.
-nologo Не выводить в консоль информацию о себе при вызове.
-6405 Генерировать код оптимальный для устройств на базе ядра nmc3, такой код не будет работать на nm6403.
-O<out_file> Установить имя выходного файла.
-Ia<file> Подставить файл file в начало входного файла
-Ib<file> Подставить файл file в конец входного файла
-I<ipath> Добавить каталог для поиска заголовочных файлов
-A<opt_file> Взять дополнительные опции из файла opt_file
-Dname[=text] Определить в контексте компиляции (аналогично #define) макрос name со значением text
-Uname Отключить макрос в контексте компиляции (аналогично #undef)
-u Отключить все макросы
-p Вместо компиляции выполнить только препроцессинг
-c Сохранить комментарии при препроцессинге
-C<codepage> Указание интерпретировать входной текст, как имеющий кодировку codepage
-E<max_err> Указание остановить компиляцию при достижении заданного числа ошибок
-W<max_warn> Указание остановить компиляцию при достижении заданного числа предупреждений
-w Не выдавать предупреждения
-M<codepage> Задать кодировку для выдаваемых сообщений
-Tc Интерпретировать входной язык как С89 (ANSI)
-Tc99 Интерпретировать входной язык как С99
-Tp Интерпретировать входной язык как С++
-Tp98 Интерпретировать входной язык как С++ версии ISO/IEC 14882:1998
-? Вывести список опций с кратким описанием

 

Драйвер компонентов

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

· Компилятор Си++:

¨ препроцессор;

¨ компилятор переднего плана;

¨ кодогенератор;

· Оптимизирующий компилятор С++;

· Ассемблер;

· Редактор связей.

Для получения исполняемого файла из программы на языке ассемблера или Си/Си++, требуется последовательно запустить несколько программ для каждого исходного файла проекта. Драйвер компонентов позволяет автоматизировать процесс создания результирующего файла из произвольного числа исходных, путём объединения перечисленных программа под единым интерфейсом.

Управление драйвером осуществляется путем использования входных параметров. Эти параметры во многом совпадают по нотации с теми, что используются при запуске отдельных программ NMSDK. Также в качестве входных параметров рассматриваются имена исходных файлов и библиотек. Подробное описание всех входных параметров драйвера приведено в подразделе 2.7. «Список параметров управления компиляцией».

Для каждого исходного файла драйвер запускает программу или программы, предназначенные для его обработки, с теми входными параметрами, которые соответствуют данной программе. Например, для исходного Си/Си++ файла драйвер запустит все перечисленные выше программы, начиная с препроцессора.

В случае возникновения ошибки в процессе компиляции и сборки программы на экран выдается диагностической сообщение, и последующие шаги компиляции не выполняются.

Параметры препроцессора (ключи -D, -U, -T, -C)

Параметры препроцессора используются только при вызове препроцессора.

2.10.4.1 Макро-символы Си++ (ключи -D и -U)

Параметры -D и -U используются соответственно для определения и уничтожения определения макро-символов языка Си++.

Имя макроса должно следовать непосредственно за используемым ключом. В случае определения можно задавать желаемое значение символа:

-DDEBUG

-UDEBUG

-DVER=100

Сохранение комментариев (ключ -C)

Параметр -C позволяет сохранить комментарии при обработке Си++ файлов при помощи препроцессора.

Без дополнительных аргументов.

Задание целевого процессора (ключи –6403,-6405)

Использование параметров –6403, -6405 позволяет задать целевой процессор. Ключ -6405 используется для всех устройств на базе ядра nmc3 (NM6405, NM6406, СБИС ЦУПП, СБИС ДЦТВ).

2.10.7 Порождение файлов листинга и перекрёстных ссылок (ключи -l и -x)

Ключи -l и -x позволяют создавать файлы листингов и файлы перекрёстных ссылок для ассемблерных модулей.

По умолчанию создаваемые файлы имеют имена, образованные из имён исходных ассемблерных файлов заменой расширения на.lst и.crf соответственно. Для создания этих файлов с другими именами можно указать желаемое имя непосредственно за используемым ключом: -l<имя_файла>. Однако изменение имени по умолчанию на произвольное разрешено только при компиляции одиночного.cpp или.asm файла. Указание аргументов ключей -l и -x при запуске драйвера со многими исходными файлами порождает сообщение об ошибке и завершение работы драйвера.

Ключи используются при запуске ассемблера.

Пример работы с драйвером компонентов

Данный пример показывает процесс сборки абсолютного файла из двух исходных файлов:

Первым исходным файлом поставлен файл t2.cpp, однако выходной файл с помощью ключа -o именуется по имени главного файла проекта: templ.abs. Для сборки выходного файла используется библиотека времени выполнения Си++, которая подключается автоматически при условии, что установлена переменная среды NEURO.

Предупреждение было выдано компилятором переднего плана, т.к. тип функции main в файле templ.cpp был описан как void, что не совпадает требованием нового стандарта языка Си++.

Можно посмотреть какие программы были запущены драйвером:

Видно, что драйвер произвел подстановку переменной среды NEURO; стандартные файлы заголовков (.h) и стандартные макробиблиотеки находятся на диске в каталогах, подставляемых автоматически. Также видно, какие промежуточные файлы создаются в процессе работы программа:

t2.cc t2.ic t2.asm templ.cc templ.ic templ.asm

Так как в командной строке не был задан параметр -Stmp, все эти файлы драйвер по окончании работы удалил. Остались лишь объектные и абсолютный файлы (редактор связей по умолчанию создаёт абсолютные исполняемые файлы):

t2.elf, templ.elf и templ.abs

Введение

Данный подраздел описывает интерфейс ассемблера из состава NMSDK., его входные управляющие параметры и различные режимы работы. Приводятся подробная информация о каждом ключе, набор ключей по умолчанию при запуске редактора связей, организация работы при помощи командного файла и список сообщений, выдаваемых ассемблером.

Об ассемблере

Ассемблер для процессоров серии 1879ВМ - это однопроходный компилятор, переводящий программу, написанную на языке ассемблера в объектный файл формата ELF. Ассемблер не разрешает внутренние ссылки, не определяет неопределенные внешние символы. Главная его задача - построить таблицу символов и произвести преобразование ассемблерных строк в инструкции процессора.

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

Формат вызова ассемблера

asm [параметры] [входной файл]

 

asm Имя файла, содержащего исполняемый код ассемблера для процессоров серии 1879ВМ.
Входной файл Входной файл, содержащий программу на языке ассемблера.
Параметры Параметры ассемблера (с префиксом "-"). Могут располагаться в произвольном месте командной строки, в произвольной последовательности. (Более подробно обсуждаются ниже).

 

В квадратные скобки заключены необязательные параметры.

Если не указано имя входного файла или не задан ни один параметр, ассемблер не произведет никаких действий, выдавая на экран только сообщение о собственном названии, версии и авторских правах.

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

Параметры общего назначения

К параметрам общего назначения относятся параметры, имеющие одинаковый смысл, и выполняющие одни и те же действия для большинства программ NMSDK процессоров серии 1879ВМ.

Сообщения об ошибках

В процессе работы ассемблер может выдавать три типа сообщений:

· предупреждения;

· ошибки;

· внутренние и фатальные ошибки.

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

В случае возникновения любого типа ошибки выходной файл не порождается, поскольку либо нет возможности для порождения кода, либо порожденный код будет заведомо неправильным и не сможет быть исполнен. Ошибки делятся на обычные, связанные с неправильным написанием программы, и фатальные, когда, даже в случае отсутствия ошибок в самой программе она не может быть откомпилирована, поскольку, например, отсутствует файл с макробиблиотеками, или обнаруживается нехватка дискового пространства.

Для выдачи сообщений на экран ассемблер использует форматированную строку. Ее формат является единым для всего комплекса NMSDK и имеет следующий вид:

 

"имя_файла", [номер_строки] тип_ошибки номер_ошибки: сообщение_об_ошибке.

 

Номер строки не указывается для внутренних и фатальных ошибок.

Под номер ошибки отведено три цифры, то есть он лежит в интервале от 0 до 999. Между типами ошибок номера распределены следующим образом:


 

Табл. 3‑5 Диапазоны номеров для различных типов сообщений.

Номера ошибок Описание
0 - 399 Предупреждения.
400 - 799 Ошибки.
800 - 949 Внутренние ошибки.
950 - 999 Фатальные ошибки.

 

Ниже приводится список сообщений, выдаваемых ассемблером при появлении различных типов ошибочных ситуаций.


 

Предупреждения

Сообщения данного типа указывают на возможность наличия в обрабатываемой программе логических или семантических неточностей. Вывод данного сообщения не влияет на правильность формирования ассемблером выходных файлов.

Сообщения компиляции (группа compile).

ASM001 "Имя секции в конструкции end отличается от имени при открытии:"
  Секция в ассемблере всегда заключена в специальные скобки. Открывающие скобки задаются псевдокомандами:.begin,.data,.nobits. После открывающей скобки расположено название секции. В качестве скобки, закрывающей секцию, используется псевдокоманда.end. После нее также должно располагаться имя секции. Оно должно совпадать с именем при открытии. Если имена секции у открывающей и закрывающей скобок не совпадают, возникает данное предупреждение (дисциплинарная конструкция). В случае несовпадения имя секции у закрывающей скобки игнорируется.
   
ASM 002 "Используйте псевдофункции 'float' или 'double'"
  Переменные типа float или double представлены в памяти процессора в формате IEEE 754. Ассемблер автоматически переводит константы типа 1.5 или 2.7Е-3 в необходимый вид. Однако для того, чтобы такой перевод был корректно осуществлен, необходимо использовать псевдофункции float или double, распознав которые, ассемблер сделает соответствующее преобразование. То есть, правильная запись констант с плавающей точкой имеет вид: float(1.5) или double(2.7E-3). В противном случае константы данного типа будут заменены нулевыми константами.
   
ASM 003 "Значение константы инициализации слишком велико, усечено"
  Такое сообщение обычно возникает при попытке инициализировать 32-х разрядную переменную 64-х битной константой. После усечения остается только младшая часть константы, старшая игнорируется, например: 0123456789ABCDEFhl -> 89ABCDEFh.
   
ASM 004 "Значение константы инициализации слишком мало, расширено"
  Такое сообщение обычно возникает при попытке инициализировать 64-х разрядную переменную 32-х битной константой. Расширение происходит за счет прописывания нулями старшей части константы, например: 12345678h -> 0000000012345678hl.
   
ASM 005 "Псевдофункции loword/hiword не могут применяться к адресным выражениям"
  Разрядность адресных выражений не превышает 32 бит, тогда как псевдофункции loword/hiword предназначены для доступа к младшей/старшей части 64-х разрядного слова соответственно.
   
ASM 006 "Имя макроса в конструкции end отличается от имени при открытии:"
  Макрос в ассемблере всегда заключен в специальные скобки. Открывающие скобки задаются псевдокомандой:.macro. После открывающей скобки расположено название макроса. В качестве скобки, закрывающей секцию, используется псевдокоманда.end. После нее также должно располагаться имя макроса. Оно должно совпадать с именем при открытии. Если имена макроса у открывающей и закрывающей скобок не совпадают, возникает данное предупреждение (дисциплинарная конструкция). В случае несовпадения имя макроса у закрывающей скобки игнорируется.
   
ASM 100 "Для получения правильного результата регистр результата не должен совпадать с регистрами множителя и множимого"
  Для операции умножения, выполняемой аппаратно, существует требование, согласно которому результат операции не может быть записан ни в регистр, в котором располагалось множимое, ни в регистр, где хранился множитель (см. «ЮФКВ.30047-01 96 01. Кросс-средства разработки программ. Описание языка ассемблера»). Сообщение предупреждает, что умножение будет выполнено неправильно.
   
ASM 101 "Операция умножения при выполнении использует регистр результата, по умолчанию подставляем gr0"
  Если не был указан регистр результата при умножении, например, в строке ассемблерной программы записано: gr2*:gr7, то по умолчанию результат будет сохранен в регистре gr0.
   
ASM 102 "Допустима только 1, используем 1"
  В языке ассемблера есть некоторые конструкции, в которых может быть использована только единица, например: gr2 = gr0 - 1. В скалярных или векторных арифметических операциях константа не может принимать участие. Запись же типа gr0 - 1 рассматривается не как операция с константой, а как унарная арифметическая операция модификации регистра общего назначения, и соответствует определенной инструкции процессора. Если в такую конструкцию по ошибке подставлено другое число, то оно автоматически заменяется на 1.
   
ASM 103 "Только регистр gr7 может быть множителем, используем gr7"
  При операции умножения, выполняемой аппаратно, существует требование, согласно которому множитель всегда должен находиться в регистре gr7. Если в обрабатываемой команде вместо gr7 стоит какой-либо другой регистр, он будет заменен на gr7.
   
ASM 104 "Допустим только 0, используем 0"
  В языке ассемблера есть некоторые конструкции, в которых может быть использован только 0, например: векторные инструкции, где 0 выступает в качестве нулевого операнда: with 0 + data. В данном случае ноль является признаком того, что в процессоре автоматически порождается нулевой вектор, который позволяет пропустить data в afifo без изменений. Если в такую конструкцию по ошибке подставлено другое число, то оно автоматически заменяется на 0.
   
ASM 10 5 "Величина сдвига слишком велика. Обрезана до 6 бит."
  Была задана слишком большая величина сдвига Val. Для 64-битных чисел не имеет смысл задавать величину сдвига более 63, и соответствующее поле в инструкции занимает 6 бит. Ассемблер в этом случае использует величину Val%64, то есть, использует младшие 6 бит переданной константы.
   
ASM 106 "Неявная длинная константа. Используйте суффикс ‘L‘"
  Была задана числовая константа, не умещающаяся в 32-битном слове. Ассемблер создал 64-битную константу. При создании 64-битных констант рекумендуется использовать суффикс ‘L’

 

Сообщения отладочной информации (группа debug).

ASM 200 "Второй аргумент не используется"
  По умолчанию данное сообщение отключено. Оно может выдаваться при анализе отладочной информации формата DWARF, когда вместо одного требуемого параметра псевдокоманде подается два. При этом второй параметр игнорируется.
   
ASM 201 "Индекс cie должен совпадать с порядковым номером данной '.debug_frame_cie'"
  Сообщение возникает при несовпадении индекса cie с порядковым номером отладочной псевдокоманды..debug_frame_cie.
   
ASM 202 "Индекс директории должен совпадать с порядковым номером команды '.debug_source_directory'"
  Сообщение возникает при несовпадении индекса каталога с порядковым номером отладочной псевдокоманды.debug_source_directory.
   
ASM 203 "Индекс файла должен совпадать с порядковым номером команды '.debug_source_file'"
  Сообщение возникает при несовпадении индекса файла с порядковым номером отладочной псевдокоманды.debug_source_file.
   
ASM 204 "В данной версии команда '.debug_macro_def' не реализована, пропускаем"
  Поддержка отладочной информации для макросов в данной версии NMSDK не осуществляется.
   
ASM 205 "В данной версии команда '.debug_macro_undef' не реализована, пропускаем"
  Поддержка отладочной информации для макросов в данной версии NMSDK не осуществляется.
   
ASM 206 "В данной версии команда '.debug_macro_start_file' не реализована, пропускаем"
  Поддержка отладочной информации для макросов в данной версии NMSDK не осуществляется.
   
ASM 207 "В данной версии команда '.debug_macro_end_file' не реализована, пропускаем"
  Поддержка отладочной информации для макросов в данной версии NMSDK не осуществляется.
   
ASM 208 "Идентификатор атрибута должен быть числом"
  В качестве идентификатора атрибута используется символьная информация.
   
ASM 209 "Значение атрибута должно быть адресом"
  Параметр отладочной псевдокоманды имеет неверный тип.
   
ASM 210 "Абстрактная команда должна состоять из тройки элементов"
  Неправильно задана структура псевдокоманды.
   
ASM 211 "Может быть только одна '.debug_root_die'"
  В тексте программы встречено более одной псевдокоманды.debug_root_die. Вторая и последующие псевдокоманды.debug_root_die игнорируются.
   
ASM 212 "Последовательность команд '.debug_*die*' должна начинаться с '.debug_root_die'"
  Отсутствует псевдокоманда.debug_root_die, определяющая начало последовательности команд, определенных схемой.debug_*die*.
   
ASM 213 "Тег die должен быть числом"
  Тег die возможно определен, как символьная константа.
   
ASM 214 "Первый аргумент операции должен быть адресом"
  Первый аргумент псевдокоманды имеет тип, отличный от адреса.
   
ASM 215 "Оба аргумента должны быть числами"
  Один или оба аргумента псевдокоманды определены как символьные константы.
   
ASM 216 "Код операции должен быть числом"
  В качестве кода операции использовано символьное выражение.
   
ASM 217 "И код операции и оба аргумента должны быть числами"
  В качестве кода операции и/или аргумента использовано символьное выражение.
   
ASM 218 "Неверное количество аргументов"
  В строке аргументов их количество превышает необходимое или недостает до необходимого.
   
ASM 219 "Неверный тип аргументов"
  В качестве аргумента поданы данные неверного типа.
   
ASM 220 "Последовательности '.debug_line' не могут быть вложенными"
  Последовательности псевдоопераций, описывающие номера строк исходного текста не могут быть вложенными.
   
ASM 221 "В первой '.debug_line' должен быть указан индекс исходного файла"
  Первая псевдооперация.debug_line, описывающая номер строки, должна хранить индекс исходного файла, в котором происходит
   
ASM222 "Пропущена команда '.debug_start_sequence'"
  Встречены псевдокоманды обработки последовательности, хотя начальная псевдокоманда.debug_start_sequence не была задана.
   
ASM 223 "команды \'.debug_XXX\' игнорируются, т.к. задан ключ \'-ga\'"
  Отладочная информация от С\С++ компилятора проигнорирована, поскольку ключ включил режим «отладка по ассемблерному файлу»
   
ASM 224 "в файле ничего нет"
  Исходный файл пуст.
   
ASM 299 "Байты block'а должны быть числами"
  Возможно в структуре блока были обнаружены байты, заданные символьными константами.

 

Сообщения формирования объектного файла (группа object)

ASM 300 "Неиспользованная метка"
  В программе на языке ассемблера была декларирована метка, однако не найдена ни одна ссылка на нее, поэтому она будет проигнорирована.
   
ASM 301 "Генерация отладочной информации невозможна"
  Данное предупреждение появляется в том месте, где найдена первая ошибка при разборе отладочной информации. Начиная с этого места продолжится генерация объектного кода, однако вся отладочная информация будет проигнорирована.
   
ASM 302 "файл листинга не будет препроцессированной версией исходника"
  Обычно, генерируемый при ассемблировании файл листинга сам по себе является ассемблерным файлом, соответствующим исходному, но с вычисленными константами, раскрытыми макросами и псевдоциклами. Однако, при использовании некоторых хитрых конструкций ассемблер не может этого обеспечить.

 

Сообщения макро-библиотекаря (группа librarian)

ASM 350 "Макрос уже есть, пропускаем:"
  В макробиблиотеке уже существует макрос с данным именем, поэтому вновь встреченный макрос будет пропущен.

 


 

Ошибки

Данный тип сообщений указывает на наличие в обрабатываемом файле некоторой ошибки. Данная ошибка не вызывает немедленного прекращения работы ассемблера, но в случае появления сообщений данной категории выходные файлы не порождаются.

ASM 400 "Слишком длинная константа"
  Данная ошибка возникает в случае, когда объявленная константа не помещается в 64 бита.
   
ASM 401 "Неправильный формат десятичного числа"
  Под неправильным форматом десятичного числа подразумевается, что в его состав входят символы, не принадлежащие цифровому ряду 0-9.
   
ASM 402 "Неправильный формат двоичного числа"
  Под неправильным форматом двоичного числа подразумевается, что в его состав входят символы, отличные от 0 и 1.
   
ASM 403 "Неправильный формат восьмеричного числа"
  Под неправильным форматом восьмеричного числа подразумевается, что в его состав входят символы, не принадлежащие цифровому ряду 0-7.
   
ASM 404 "Неправильный формат шестнадцатеричного числа"
  Под неправильным форматом шестнадцатеричного числа подразумевается, что в его состав входят символы, не принадлежащие цифровому ряду 0-9, и не соответствующие буквам A, B, C, D, E, F.
   
ASM 405 "Недопустимый символ"
  Под недопустимым символом в языке ассемблера понимается символ, не принадлежащий следующему подмножеству символов: строчные и прописные латинские буквы, десятичные цифры, а также следующие символы:  ., / \:; " ’ ` [ ] - + = &! < > () * { } _.
   
ASM 406 "Недопустимое условие"
  Под недопустимым условием, приводящим к данной ошибке, в языке ассемблера понимается следующее: · если после символов u> без пробела стоит любой символ, кроме =. То есть должно быть: u>=. · если после символов <> без пробела стоит любой символ, кроме 0. То есть, должно быть: <>0.
   
ASM 407 "После операции квотирования должен быть идентификатор"
  Символ '`' (обратный апостроф) в языке ассемблера может использоваться только в операциях квотирования, то есть когда пользователь желает использовать в качестве идентификатора служебное слово, оно должно в обязательном порядке предваряться символом '`'. Если между данным символом и идентификатором стоит пробел, или если идентификатор отсутствует, возникает данная ошибка.
   
ASM 408 "Не совпадают завершители строки"
  Когда некоторая строка заключается в двойные кавычки, ассемблер вправе ожидать, что если был встречен знак открывающих кавычек ", то до конца строки должны появиться закрывающие двойные кавычки. Если закрывающие кавычки не найдены, или вместо них встречены одиночные, возникает данная ошибка.
   
ASM 409 "Неправильное объявление переменной"
  Данная ошибка возникает, если переменная объявлена вне какой-либо программной секции, и при этом она не является переменной типа common или extern.
   
ASM 410 "Неправильная инициализация"
  Данная ошибка возникает, когда ассемблер обнаруживает попытку инициализации переменной типа common или extern. Переменные данных типов в силу своей природы не могут быть инициализированы.
   
ASM 411 "Неверный тип переменной - предполагается WORD"
  .
   
ASM 412 "Неправильное объявление структуры"
  Данная ошибка возникает, когда имя структуры, определенное рядом с открывающей скобкой struct не совпадает с именем при закрывающей скобке end, например: struct AAA A: word; B: long; end AA;
   
ASM 413 "Поле структуры не найдено"
  Данная ошибка возникает при попытке обращения к несуществующему полю используемой структуры, например: ar0 = offset(AAA, C);, хотя у структуры AAA есть только поля A и B.
   
ASM 415 "Неправильное использование слова OWN"
  Данная ошибка возникает при использовании ключевого слова own вне тела макроса, что недопустимо, поскольку это слово используется для меток, объявленных только внутри макроса.
   
ASM 416 &qu

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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.067 с.