Программирование DSP Опции командной строки компилятора Blackfin Fri, December 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Опции командной строки компилятора Blackfin Печать
Добавил(а) microsin   

Вызвать подсказку по опциям можно с помощью командной строки:

"C:\Program Files (x86)\Analog Devices\VisualDSP 5.0\ccblkfn.exe" -help

Общее использование командной строки компилятора (в командной строке опции могут чередоваться с именами файлов):

ccblkfn.exe [опции] [файлы]

Примечание: все непонятные термины и сокращения см. в разделе Словарик в конце статьи. Также см. раздел Словарик из статьи [1].

[Общее описание опций]

-@ < file > Размещает содержимое файла file (файл содержит управляющие опции) в текущую позицию командной строки.

-A < name >[(< tokens >)] Утверждает name как предикат (утвердитель, сказуемое) с указанными токенами tokens, как если бы это было сделано директивой #assert препроцессора.

-add-debug-libpaths Автоматически добавляет подкаталог Debug в пути поиска для каждого пути поиска стандартных библиотек, переданного линкеру.

-alttok Позволяет появление в модулях исходного кода альтернативных ключевых слов операторов и последовательностей диграфа.

-always-inline Всегда делает встраивание функций (т. е. код функции вставляется каждый раз в код без вызова функции инструкцией CALL), которые помечены ключевым словом inline.

-anach Показывает, что разрешены анахронизмы, когда компилируемый исходный код написан на ANSI C++.

-annotate Разрешает аннотации в файлах ассемблера (задано по умолчанию).

-annotate-loop-instr Предоставляет дополнительную информацию в виде аннотаций для пролога, тела и эпилога циклов.

-auto-attrs Создает некоторое количество атрибутов файла на основе содержимого исходного файла.

-bss Помещает инициализированные нулем глобальные данные в секцию BSS (скорее всего опечатка, имеется в виду секция BSZ).

-build-lib Инструктирует драйвер собрать архивную библиотеку (*.dlb) из результирующих объектов в командной строке вместо того, чтобы запустить линкер для создания выполняемого файла (*.dxe).

-C Предохраняет комментарии в любом предварительно обработанном выводе.

-c Подавляет фазу редактирования линковки при компиляции, и не удаляет любые объектные файлы, созданные при компиляции.

-c++ Показывает, что компилируемые файлы исходного кода написаны на C++.

-c89 Показывает, что исходные файлы написаны в соответствии со стандартом ISO/IEC 9899:1990 с аналогичными расширениями языка (поведение по умолчанию).

-c99 Показывает, что исходные файлы написаны в соответствии со стандартом ISO/IEC 9899:1999 с аналогичными расширениями языка.

-check-init-order Если Ваша программа использует глобальные объекты с конструкторами, и имеет несколько модулей исходного кода, это не гарантирует, что конструкторы объектов будут запущены перед использованием объектов. Опция -check-init-order добавит код диагностики для проверки - произошла ли инициализация до момента использования объекта. Не рекомендуется использовать в коде, предназначенном для конечного продукта.

-const-read-write Указатель на const может получить доступ к данным не только для чтения (как определено в ANSI/ISO C).

-const-strings Показывает, что строковые литералы должны быть квалифицированы const.

-cplbs Компилятор должен предположить, что доступ к памяти и коду должен быть проверен системой CPLB (Cache Protection Lookaside Buffers, не могу точно перевести этот термин, подробнее про CPLB см. [1]). Это позволяет компилятору более агрессивно обрабатывать потенциальный доступ к не допустимым адресам памяти, или инструкции косвенной адресации по указателю (indirect pointer instructions).

-D < name >[=< def >] Определяет макрос препроцессора name, у которого значение def (если параметр def опущен, то name определено в значение 1).

-dcplbs Компилятор должен предположить, что доступ к памяти данных должен быть проверен системой DCPLB (Data Cache Protection Lookaside Buffers). Это позволяет компилятору более агрессивно обрабатывать потенциальный доступ к не допустимым адресам памяти.

-decls-strong Не инициализированные глобальные переменные рассматриваются как строго инициализированные нулем, например глобальная переменная "int x;" будет эквивалентна глобальной переменной "int x = 0;".

-decls-weak Не инициализированные глобальные переменные рассматриваются как слабые определения, например определение глобальной переменная "int x;" эквивалентна "extern int x;".

-double-size-any Определяет, что результирующие объектные файлы должны быть помечены так, что это разрешит их слинковать объектами, построенными с размером либо 32, либо 64 бита.

-double-size-{32|64} Принудительно задает тип double в 32-битном формате IEEE одинарной точности (-double-size-32) или 64-битном формате IEEE двойной точности (-double-size-64).

-dry Отображает основные действия драйвера, но не выполняет их.

-dryrun Отображает основные действия драйвера, но не выполняет их.

-E Выполняет только обработку препроцессора.

-ED То же самое, что и -EE, но отправляет вывод в файл. Действие этой опции может перезадать опция -MM.

-EE То же самое, что и -E, но не будет остановлена компиляция после выполнения препроцессинга.

-eh Разрешает обработку исключений C++ (exception handling).

-enum-is-int По умолчанию перечисления (enum) могут иметь тип больший, чем int. Эта опция гарантирует, что тип enum будет типом int.

-expand-symbolic-links Разрешает поддержку в командной строке и в директивах подключения (include) путей стиля Cygwin.

-expand-windows-shortcuts Разрешает поддержку ярлыков (шорткатов) Windows в командной строке и в директивах подключения (include).

-expert-linker Предоставляет линию связи, используемую первоначально Expert Linker.

-extern-inline Разрешает поддержку встраиваемых (inline) с внешними линковками в C++.

-extra-keywords Разрешает распознавание ключевых слов расширения Analog C.

-extra-loop-loads Циклам, которые проходят по памяти, разрешено читать за разрешенный диапазон без вредных последствий. Может ускорить обработку циклов.

-fast-fp Позволяет использовать более быстрые, но менее точные подпрограммы работы с плавающей точкой (не соответствуют стандарту IEEE).

-file-attr < name >[=< attr >] Задает для атрибута файла name определение attr (если attr пропущен, то attr определяется в 1).

-fixed-point-io Инструктирует компилятор использовать фичу оптимизированных урезанных определений функций stdio.h для поддержки типов с плавающей точкой. Приводит к определению макроса _ADI_FX_LIBIO и для компилятора, и для линкера.

-flags-< asm|compiler|ipa|lib|link|prelink > < arg1 >[,arg2...] Передает опции каждому из инструментов компиляции - ассемблеру, компилятору, IPA solver, сборщику библиотеки, линкеру и prelinker соответственно.

-force-circbuf Обрабатывает ссылки на массивы в форме array[i%n] как операции с кольцевым буфером.

-force-link Всегда создает новое окно стека (stack frame) для leaf-функций (по умолчанию для -g, осуществленного для опций -p).

-fp-associative Обрабатывает умножение с плавающей точкой и дополнение как ассоциативную операцию.

-friend-injection Разрешает нестандартное разрешение имен (non-standard name lookup) для имен классов или функций, декларированных как дружественные (friends).

-full-dependency-inclusion Инструктирует компилятор, что при генерации зависимостей нужно подключать неявно включаемые (include) файлы .cpp больше одного раза. Использование этой опции может увеличить время генерации зависимостей.

-full-io Инструктирует компилятор использовать полнофункциональные определения ANSI-совместимых функций stdio.h. Приводит к определению макроса _DINKUM_IO и для компилятора, и для линкера.

-full-version Отображает номер версии драйвера и любого процесса, который вовлекается драйвером.

-fx-contract Устанавливает состояние по умолчанию прагмы FX_CONTRACT в ON.

-fx-rounding-mode-biased Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в BIASED.

-fx-rounding-mode-truncation Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в TRUNCATION.

-fx-rounding-mode-unbiased Устанавливает состояние по умолчанию прагмы FX_ROUNDING_MODE в UNBIASED.

-g Приводит к тому, что компилятор будет генерировать дополнительную информацию в выходном коде, требуемую для использования отладчиками.

-glite Побуждает компилятор удалить все ненужную отладочную информацию, что уменьшит размер исполняемого кода и библиотек, в сравнении с использованием опции -g.

-guard-vol-loads Защищает volatile-загрузки от прерывания и перезапуска, путем запрета прерываний во время загрузок.

-H Выполняет только препроцессинг, но выводится только список подключаемых (#include) имен файлов.

-HH То же самое, что и -H, но после препроцессинга компиляция не останавливается.

-h[elp] Отображает быструю общую подсказку по опциям.

-i Показывает, что при использовании опции -H или -M будут перечисляться только include-файлы, имена которых указаны в двойных кавычках.

-I < dir >[< ;|, >dir...] Добавляет dir к списку директорий, где осуществляется поиск подключаемых файлов. Несколько директорий опрашиваются в порядке, котором директории указаны. Имена директорий могут отделяться друг от друга запятыми или символом точки с запятой.

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

-icplbs Компилятор должен предположить, что код программы использует ICPLB (Instruction Cache Protection Lookaside Buffers, защищенные буферы кэша инструкций). Это позволяет компилятору агрессивнее обрабатывать потенциально ошибочные инструкции с косвенными указателями (относится к использованию аномалии кристалла silicon anomaly 05-00-0426).

-ieee-fp Используются более медленные подпрограммы для операций с плавающей точкой, которые полностью удовлетворяют стандарту IEEE floating point.

-ignore-std Компилятор игнорирует стандартное пространство имен (namespace std) в всех заголовочных файлах стандартных библиотек.

-implicit-inclusion Разрешает неявное подключение исходных файлов как метод нахождения определений инстанцированных элементов шаблона (только для C++. Подробнее про шаблоны см. [3]).

-implicit-pointers Побуждает компилятор разрешить использование не совместимых указателей в выдачей предупреждений.

-include < file > Инструктирует компилятор подключить файл file перед каждым модулем (именем файла) исходного кода, который появляется в командной строке.

-instantlocal Инстанцирует все элементы шаблона, используемые в этой компиляции. Эта опция гарантирует, что все шаблоны будут учтены внутренней линковкой.

-ipa Задает внутрипроцедурный анализ, который должен быть выполнен между элементами трансляции (translation units). Использование -ipa неявно разрешает действие -O.

-jcs2l Передает линкеру опцию -jcs2l, что разрешает преобразование коротких переходов/вызовов (jumps/call) в длинные. Будет использоваться регистр P1 для косвенных jump/calls, когда недостаточно длинных jump/call. Разрешено по умолчанию.

-L < dir >[< ;|, >dir...] Добавляет dir к списку директорий, где осуществляется поиск библиотек. Несколько директорий опрашиваются в порядке, котором директории указаны. Имена директорий могут отделяться друг от друга запятыми или символом точки с запятой.

-l < lib > Подключает библиотеку объектов lib< lib >.dlb к командной строке, и её поиск будет осуществляться в путях поиска библиотек.

-list-workarounds Отображает список обхода проблем (workarounds), поддерживаемых компилятором.

-M Выполняет только препроцессинг, на выходе появится только файл зависимостей, используемый с make.

-map < file > Инструктирует линкер генерировать указанный файл, содержащий карту памяти (memory map) для всех символов, используемых в линковке.

-MD То же самое, что и -MM, но отправляет все файловые зависимости в файл.

-mem Инструктирует драйвер запустить после линковки инициализатор памяти.

-misra Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Некоторые правила накладываются принудительно, это те правила, действие которых по умолчанию ослаблено, как это записано в руководстве компилятора. Используйте опцию -misra-strict, если Вы хотите жестко применять эти правила.

-misra-linkdir Для правил MISRA требуется на этапе линковки проверять файлы .misra, генерируемые в текущей рабочей директории. Эта опция помещает файлы .misra в указанном месте.

-misra-no-cross-module Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Не проверяются правила, которые нужны для проверок во время линковки.

-misra-no-runtime Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004. Не выполняются проверки для правил, предназначенных для времени выполнения кода.

-misra-strict Приводит компилятор к генерации сообщений об ошибке для любых конструкций в исходном коде, которые не удовлетворяют стандарту ANSI C и рекомендациям MISRA:2004.

-misra-suppress-advisory Подавление сообщений любых рекомендующих правил MISRA.

-misra-testing В результате действия этой опции компилятор не будет генерировать ошибки для любых функций библиотеки, включая выделение памяти из кучи и ввод/вывод, иначе подразумевается опция -misra-strict. Эти библиотечные функции нарушают правило 20 из рекомендаций MISRA:2004.

-MM То же самое, что и -M, но не делает остановку компиляции после препроцессинга.

-Mo < output_file > Задает имя выходного файла output_file для создания зависимостей (dependency), отличающегося от stdout. Эта опция должна использоваться совместно с опциями -ED или -MD.

-Mt < новое_имя_цели > Указывает альтернативное имя файла для создания зависимостей цели (dependency target), отличающегося от автоматически генерируемого имени. Эта опция должна быть использована вместе с опциями -M или -MM.

-multicore Задает, что линкуемый с библиотеками код пользователя реентрантный (re-entrant), который может быть размещен в общих секциях памяти многоядерной цели (multi-core target). Эта опция не делает какие-либо проверки, что код пользователя реентрантный.

-multiline Разрешает поддержку строк GNU, состоящих из нескольких линий.

-never-inline Делает игнорирование ключевого слова inline для функций.

-no-alttok Не позволяет появление в исходном коде альтернативных ключевых слов операторов и последовательностей диграфа.

-no-anach Не позволяет анахронизмы в исходном коде ANSI C++.

-no-annotate Запрещает аннотации ассемблерных файлов.

-no-annotate-loop-instr Запрещает выдавать дополнительную аннотационную информацию для циклов (поведение по умолчанию).

-no-assume-vols-are-mmrs Инструктирует компилятор не подразумевать, что volatile-загрузки и сохранения происходят в адреса MMR, и таким образом являются кандидатами на применение обхода проблем кремния (silicon errata workarounds) для MMR.

-no-auto-attrs Запрещает автоматическое создание атрибутов файла.

-no-bss Помещает глобальные, инициализируемые нулем данные в обычные секции для данных.

-no-builtin Инструктирует компилятор не использовать какие-либо встроенные функции, за исключением имен, начинающихся на двойное подчеркивание.

-no-circbuf Запрещает автоматическую генерацию кода кольцевой буферизации.

-no-const-strings Показывает, что строковые литералы не должны квалифицироваться как const.

-no-defs Предотвращает драйвер от передачи по умолчанию компилятору или линкеру любых assert, макросов препроцессора, каталогов include, каталогов поиска библиотек или модулей, и также запрещает расширения ключевых слов языка C.

-no-demangle Предотвращает драйвер от фильтрации каких-либо ошибок от линкера через C++ name demangler.

-no-eh Запрещает обработку исключений C++ (exception handling).

-no-expand-symbolic-links Запрещает в командной строке и директивах include поддержку путей стиля Cygwin.

-no-expand-windows-shortcuts Разрешает (может запрещает, здесь опечатка?..) в командной строке и директивах include поддержку ярлыков (Windows Shortcuts).

-no-extern-inline Запрещает в C++ поддержку функций inline с внешними линковками.

-no-extra-keywords Запрещает распознавание ключевых слов расширения Analog C.

-no-force-link Не создает новое окно стека для leaf-функций, если оно может быть опущено. Отменяет умолчание для -g.

-no-fp-associative Не обрабатывает операции умножение с плавающей точкой и сложение как связанные.

-no-friend-injection Разрешает стандартное разрешение имен C++ (standard name lookup) для классов или имен функций, декларированных как friends.

-no-full-io Инструктирует компилятор использовать оптимизированные, урезанные определения функций stdio.h. Приводит к определению макроса _ADI_LIBIO и для компилятора, и для линкера.

-no-fx-contract Устанавливает в OFF состояние по умолчанию прагмы FX_CONTRACT.

-no-implicit-inclusion Запрещает неявное подключение исходных файлов как метод нахождения определений инстанцированных элементов шаблона (относится только к C++).

-no-int-to-fract При насыщении не создает операции с плавающей точкой вместо целочисленных.

-no-jcs2l Подавляет действие опции линкера -jcs2l расширения jump/call.

-no-mem Предотвращает драйвер от запуска инициализатора памяти после линковки.

-no-multiline Запрещает поддержку строк GNU с несколькими линиями.

-no-progress-rep-timeout Компилятор не будет выдавать диагностическое сообщение о том, что время компиляции превышает основной лимит.

-no-rtti Запрещает использование информации о типах во время выполнения (касается только C++).

-no-sat-associative Не обрабатывает насыщаемое сложение как ассоциативное.

-no-saturation Не создает операции насыщения вместо операций без насыщения.

-no-std-ass Приводит к игнорированию предопределенных assert, и предопределенных, зависящих от системы, макросов препроцессора.

-no-std-def Предотвращает драйвер от передачи компилятору любых предопределенных макросов препроцессора.

-no-std-inc Предотвращает драйвер от передачи компилятору любых директорий include по умолчанию.

-no-std-lib Предотвращает драйвер от передачи линкеру любых библиотек или директорий поиска библиотек по умолчанию.

-no-std-templates Разрешает традиционные парсинг шаблонов и обработку имен (name lookup).

-no-threads Указывает, что весь компилируемый код не должен быть потокобезопасным (thread-safe).

-no-utility-rom Не делает линковку Tools Utility ROM (только ADSP-BF592-A). Эта опция передает линкеру макрос NO_UTILITY_ROM и включает поведение по умолчанию, когда компиляция производится для ревизий кремния none, any, 0.0 и 0.1.

-no-workaround < workaround >[,< workaround >] Запрет генераций обхода проблем (workaround) для указанного hardware errata. Допустимые workaround перечислены ниже.

-no-zero-loop-counters Запрещает обнуление счетчиков цикла на выходе функций.

-o < file > Создает выходной файл с указанным именем file вместо имени, генерируемого по умолчанию.

-Oa Включает auto-inlining, которое может управляться опцией -Ov.

-Ofp Смещение указателя фрейма (Frame Pointer, регистр FP) от начала фрейма, если разрешены более короткие инструкции загрузки/сохранения (load/store).

-Og Генерирует код с отладочной информацией, который оптимизирован насколько возможно для сохранения полного функционала режима отладки (-g).

-Os Генерирует код, который оптимизирован на минимальный размер кода, который не будет кодом, дающим максимальное быстродействие.

-Ov < num > Оптимизация, которая позволяет управлять соотношением скорости и быстродействием. Параметр num должен быть целым числом между 0 (оптимизация, полностью ориентированная на минимальный расход памяти) и 100 (оптимизация, полностью ориентированная на максимальное быстродействие кода).

-overlay Задает, какие функции могут быть в оверлее и направляет компилятор не отслеживать, какие временные регистры (scratch registers) могут быть общими (clobbered-регистры) между вызовами функций.

-overlay-clobbers < clob1 >[,clob2...] Задает clobbered-регистры, которые используются менеджером оверлея.

-O[0|1] Включает оптимизации компилятора (-O или -O1), при этом -O0 выключает все оптимизации.

-P Делает только препроцессинг, но не подключает информацию управления строками.

-p Генерирует дополнительную информацию в конечном выполняемом коде для использования в утилите профайлинга profblkfn. Записывает данные профайлинга в стандартный поток вывода и файл ./mon.out.

-p1 То же самое, что и -p, но только записывает данные в файл ./mon.out.

-p2 То же самое, что и -p, но только выводит данные в стандартный поток вывода.

-path-< asm|compiler|ipa|lib|link|prelink > < path > Использует инструмент компиляции, указанный в пути path - под инструментами подразумевается ассемблер, компилятор, IPA solver, сборщик библиотеки, линковщик и prelinker соответственно.

-path-install < file > Задает директорию инсталляции компилятора, инструментов, библиотек и подключаемых файлов.

-path-output < dir > Задает директорию, отличающуюся от текущей, чтобы поместить в неё все не временные файлы.

-path-temp < dir > Задает, что драйвер должен создавать временные файлы в папке dir.

-pch Разрешает автоматическую генерацию и использование файлов прекомпилированных заголовков (precompiled header files).

-pchdir < dir > Задает каталог dir как альтернативную директорию в PCHRepository, в которой сохраняются файлы прекомпилированных заголовков (precompiled header files).

-pgo-session < session-id > Задает строку идентификатора сессии PGO (Profile Guided Optimization, оптимизация, управляемая профилем) для этой компиляции, для генерации информации PGO в конечном выполняемом коде и для выбора сессии, если имеются результаты от предыдущего запуска PGO.

-pguide Генерирует дополнительную информацию в конечном выполняемом коде для Profile Guided Optimization (оптимизация, управляемая профилем). Когда запускается симулятор, метрики будут собраны с информацией о том, как часто каждая часть приложения была вызвана.

-PP Работает похоже на -P, но не останавливает компиляцию после препроцессинга.

-pplist < file > Записывает сырой листинг препроцессинга в указанный файл.

-proc < identifier > Инструктирует компилятор генерировать код, подходящий для указанного типа DSP.

-progress-rep-func Выдает диагностическое сообщение каждый раз, когда компилятор начинает компиляцию новой функции.

-progress-rep-opt Выдает диагностическое сообщение каждый раз, когда компилятор начинает новый проход оптимизации на функции.

-progress-rep-timeout Выдает диагностическое сообщение, если компилятор превысил лимит времени при компиляции. Это показывает, что компилятор все еще работает, просто на работу требуется больше времени.

-progress-rep-timeout-secs Задает, сколько секунд должно пройти до того, как компилятор выдаст диагностику о том, что времени прошло слишком много.

-r Указывает, что все выходные объектные файлы с перемещаемым кодом должны быть скомбинированы в один объектный файл с перемещаемым кодом при последующей перелинковке.

-R < dir >[< ;|, >dir...] Добавляет dir к списку директорий, по которым идет поиск файлов исходного кода - несколько каталогов с исходным кодом просматриваются в порядке, в котором они указаны. Отдельные записи путей каталогов могут быть отделены друг от друга запятой или точкой с запятой.

-R- Удаляет из списка все директории для поиска исходных файлов.

-reserve < reg1 >[,reg2...] Предотвращает использование отдельных регистров компилятором.

-rtti Разрешает использование информации о типах во время выполнения программы (run-time type information, касается только C++).

-s Инструктирует линкер удалить всю отладочную информацию из выходных объектных файлов, и также удаляет таблицу символов из выходного исполняемого файла.

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

-sat-associative Обрабатывает сложение с насыщением как ассоциативное.

-save-temps Предотвращает удаление всех временных файлов, которые созданы драйвером или компилятором.

-sdram Компилятор должен подразумевать, что как минимум банк 0 внешней памяти SDRAM присутствует и его работа разрешена. Это позволяет компилятору более агрессивно обрабатывать потенциально ошибочные доступы к памяти.

-section < identifier >=< section >[,< identifier >=< section >...] Направляет компилятор разместить внутренние структуры типа identifier в память секции section вместо размещения по умолчанию.

Опция -section id=section_name[,id=section_name...] управляет размещением определенных типов данных (заданных идентификаторами id), генерируемых компилятором. Данные размещаются в секцию section_name, как это указано в командной строке.

В настоящее время поддерживает следующие идентификаторы секций (подробнее см. раздел "Placement of Compiler-Generated Code and Data" руководства [4]).

code Управляет размещением машинных инструкций.
data Управляет размещением данных инициализированных переменных.
constdata Управляет размещением данных констант.
bsz Управляет размещением данных переменных, инициализированных нулями.
sti Управляет размещением функций "start" статических конструкторов класса C++. По умолчанию program. Дополнительную информацию см. в разделе "Constructors and Destructors of Global Class Instances" руководства [4].
switch Управляет размещением таблиц перехода, используемых для реализации операторов switch C/C++. По умолчанию constdata.
vtbl Управляет размещением таблиц виртуальных функций C++ (virtual lookup table).
vtable Синоним vtbl.
strings Управляет размещением строковых литералов.
autoinit Управляет размещением данных, используемых для инициализации автоматических агрегатов (aggregate auto).
alldata Управляет размещением сразу data, constdata, bsz, strings и autoinit.

Обратите внимание, что alldata это не реальный вид секции, а место хранения для data, constdata, bsz, strings и autoinit. Таким образом,

-section alldata=X

будет эквивалентно

-section data=X
-section constdata=X
-section bsz=X
-section strings=X
-section autoinit=X

Убедитесь, что выбранная в командной строке секция присутствует в файле .ldf (подробнее см. руководство "VisualDSP++ Linker and Utilities Manual").

-show Отображает командную строку, которая была передана драйверу, включая расширение опций файлов и переменные окружения.

-si-revision < none|any|x.x > Устанавливает ревизию кремния (silicon revision) для сборки, где x.x это номер ревизии для аппаратуры кристалла. Если опция -si-revision не используется, инструментарий выберет ревизию по умолчанию среди всех поддерживаемых ревизий.

-signed-bitfield Принудительно назначает целочисленные битовые (int) поля как числа со знаком.

-signed-char Принудительно считает обычный char как число со знаком.

-stack-detect Побуждает компилятор генерировать дополнительные инструкции в генерируемом коде, которые детектируют ситуации потенциального переполнения стека.

-std-templates Разрешает парсинг и просмотр имен для стандартных шаблонов C++.

-structs-do-not-overlap Подразумевается, что нет перекрытия областей памяти во время копирования структур, когда копирование может быть реализовано через стандартную функцию memcpy.

-syntax-only Выполняется только проверка синтаксиса, код не генерируется.

-sysdefs Инструктирует драйвер определить макрос препроцессора, который описывает текущего пользователя и компьютер.

-T < file > Задает, что файл file должен использоваться вместо используемого по умолчанию файла описания линковки (linker description file, *.ldf).

-threads Задает, что код пользователя будет линковаться с потокобезопасными библиотеками. Эта опция тем не менее не делает каких-либо проверок безопасности потоков в самом пользовательском коде. Если используется эта опция, то компилятор определит макрос _ADI_THREADS как единица. Эта опция применяется для компиляции VDK-проектов.

-time Отображает информацию времени для процессов, вовлекаемых драйвером.

-U < name > Отменяет (Undefine) макрос препроцессора name после обработки всех других опций -D командной строки.

-unsigned-bitfield Принудительно рассматривает обычные целочисленные (int) битовые поля как целые числа без знака.

-unsigned-char Принудительно рассматривает обычный char как целое число без знака.

-utility-rom Линковка в расчете на Tools Utility ROM (только для ADSP-BF592-A). Это поведение по умолчанию, когда компилирование происходит для ревизии кремния далее 0.2.

-v Отображает командную строку и номер версии драйвера, и любые процессы, вовлекаемые драйвером.

-verbose Отображает командные строки всех процессов, которые вовлекает драйвер.

-w Подавляет предупреждающие сообщения для драйвера и компилятора.

-warn-protos Приводит компилятор к выдаче предупреждений по поводу любых функций, для которых не предоставлены полные прототипы.

-Werror-limit < limit > Устанавливает лимит на количество ошибок в значение limit, после превышения которого компиляция будет отменена.

-Werror-warnings Приводит компилятор к выдаче ошибок для любых диагностик, которые обычно выдавались бы как предупреждения.

-Wmis_suppress Ожидает список номеров правил MISRA, и гарантирует, что не будет сообщения о нарушении этих правил.

-Wmis_warn Ожидает список номеров правил MISRA, и гарантирует, что нарушения правил будут оповещаться как предупреждения.

-workaround < workaround >[,< workaround >...] Разрешает кодогенератор обхода ошибок (workaround) для указанного hardware errata. Допустимые workaround перечислены ниже.

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

-Wterse Отображает сообщения компилятора в более короткой форме.

-W{error|remark|suppress|warn} < num >[,num...] Отменяет выдачу некоторых отдельных диагностических сообщений компиляции, где num представляет номер подавляемого сообщения.

-xref < file > записывает листинг информации о перекрестных ссылках (cross-reference) в указанный файл.

-zero-loop-counters Разрешает обнуление счетчиков цикла на выходе из функции. Эта опция предоставлена для написания кода инициализации пользователя, который вызывается кодом Boot ROM, который не подчиняется ABI компилятора.

[Допустимые методы обхода проблем кристалла (workaround)]

Здесь приведен список допустимых workaround для этой архитектуры (Blackfin), применяемых для командной строки компилятора:

csync, isr-ssync, isr-imask-check, wt-dcache, wb-dcache, astat-rnd_mod, avoid-dag1, killed-mmr-write, sdram-mmr-read, dreg-comp-latency, signbits, testset-align, scratchpad-read, shift, speculative-loads, speculative-syncs, cycles-stores, l2-testset-stall, avoid-ldf-boundaries, infinite-stall-202, no-cplbs-spec-protect-246, short-loop-exceptions-257, pre-loop-end-sync-stall-264, lost-stores-to-data-cache-262, stalled-mmr-write-283, mem_branch_mem_F3_F_021, spec_multiply_F3-F-008013, flags-mmr-anom-311, sync-loop-anom-312, avoid-quick-rts-371, 05000428, 05000426, 05000443, 05000412, 05000010, 05000477.

[Словарик]

ABI Application Binary Interface. В C++ ABI описываются подробности на двоичном уровне, которые не специфицируются в Стандарте. Стандарт описывает общее поведение, но не говорит как оно должно быть реализовано. Например, в Стандарте говорится как должны себя вести виртуальные функции, но на реализации этого поведения через виртуальные таблицы никто не настаивает.

Как будут располагаться в памяти классы, как виртуальные таблицы, передача параметров, реализация RTTI и т.п. - все это описывается в ABI. Если два компилятора на одной и тоже же платформе будут следовать разным ABI, то не будет совместимости на уровне двоичного кода, нельзя будет код от двух компиляторов слинковать, например.

clobbered-регистры специальные ячейки памяти, которые компилятор выделяет для использования внутри функций - с целью повышения эффективности программы. Обычно в качестве таких регистров используются регистры, к которым возможна минимальная задержка на доступ чтения/записи (SRAM или специальные регистры).

IPA solver Intelligent Performance Assistant, дословный перевод "интеллектуальный помощник для улучшения производительности". IPA также переводят как interprocedural analysis - опция, которая включает в компиляторе межпроцедурный анализ (-ipa). Эта опция разрешает оптимизацию по всей программе, включая оптимизацию между отдельными файлами исходного кода, которые компилируются отдельно друг от друга. Если эта функция используется, то опция -ipa должна применяться для частей программы (всех модулей кода на языках C и C++).

leaf-функция дословный перевод "функция-листочек". На некоторых процессорах функция, которая сама не делает вызовов функций, работает эффективнее, если не организовывает собственного окна регистров. Часто это означает, что нужно принимать аргументы функции в регистрах, вместо того, чтобы принимать их обычным образом, через стек. Особая обработка для leaf-функций может произойти только при соблюдении других условий. Например, часто leaf-функции могут использовать только определенные регистры для своих собственных переменных временного хранения данных. Термин "leaf-функция" означает, что функция подходит для некой ускоренной обработки, так что не обязательно отсутствие внутренних вызовов из функции сделает её leaf-функцией.

MMR Memory Mapped Register, отображенный на адрес памяти регистр. Особая ячейка в плоском адресном пространстве Blackfin, предназначенная для управления какой-либо аппаратурой процессора.

thread-safe, потокобезопасный. Термин thread-safe не имеет общепринятого перевода на русский язык. Дословно это словосочетание следует переводить как "безопасный для использования в многопоточной программе". Чаще всего этот термин применяется к библиотечным функциям и библиотекам в целом (из лекции сайта intuit.ru).

Деманглинг (англ. demangle). В конструкциях компилятора термин name mangling (также называется name decoration, декорация имен) означает технику, используемую для урегулирования различных проблем, связанных с разрешением уникальных имен элементов программы на разных современных языках программирования. Элементами декорации часто могут быть префиксы (например в виде подчеркивания) и/или суффиксы, добавляемые к имени функции. Декорация имен предоставляет дополнительную информацию в имени функции, структуры, класса или другого типа данных в с целью передачи этой информации от компиляторов к линковщикам. Потребность в декорации имен возникает в том случае, когда нужно генерировать уникальные имена объектов программы для случаев, когда одно и то же имя идентификатора появляется в различных контекстах программы (т. е. в разных областях namespace, областях видимости. Обычно namespace определяется как область действия имени объекта, ограниченная модулем, классом, или явно указанной директивой namespace или фигурными скобками). Также декорация может потребоваться для разных вариантов перезагрузки функции (function overloading). Любой объект кода, который генерируется компилятором, обычно линкуется с другими объектами кода (также сгенерированных этим или иногда другим компилятором) по своему типу. Линковку делает специальная программа - linker, которая нуждается в полной информации по каждому элементу программы. Например, корректная ссылка на функцию нуждается не только в имени, но также и в количестве аргументов функции, её типах и т. д. Соответственно деманглинг соответствует обратному преобразованию по отношению к декорации имен (кое-что взято из английской Википедии).

Диграф (в семействе языков Си) (англ. digraph) — последовательность из двух или более символов, интерпретируемая компилятором как один или более символов. В отличие от триграфов, подстановка диграфов препроцессором выполняется после лексического анализа и только в том случае, если диграф является отдельной лексемой (из Википедии).

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

Профайлинг специальный анализ исполняемого кода, помогающий выявить критичные с точки зрения быстродействия участки кода (которые выполняются наиболее часто и интенсивно). Именно эти участки кода требуют отдельного внимания для высококачественной оптимизации.

Реентрантный (англ. re-entrant, или reentrant, reentrancy). В технологии программирования подпрограмма или программ называется реентрантной, если она может быть прервана в любом месте своего потока выполнения, и безопасно вызвана снова ("re-entered", т. е. дословно означает "зайти снова") до того, как предыдущий вызов завершится. Прерывание потока может быть вызвано внутренними операциями jump (переход) или call (вызов подпрограммы), или может быть из-за внешних действий, таких как аппаратное прерывание или событие (сигнал). Как только завершится повторный вход в подпрограмму, остальные запущенные вызовы могут безопасно и корректно продолжить свою работу.

Определение реентрантный произошло от однопоточного программного окружения, где поток выполнения мог быть прерван аппаратным прерыванием, при этом управление выполнением кода переходит к обработчику прерывания (interrupt service routine, ISR). Любая подпрограмма, которую использует ISR, потенциально может быть прервана (когда запустился этот или другой обработчик прерывания), так что она должна быть реентрантной. Часто подпрограммы, которые доступны через ядро операционной системы, не являются реентрантными. Таким образом, обработчики прерывания ограничены в действиях, которые они могли бы выполнить; например, им запрещен доступ к файловой системе и иногда запрещено выделение памяти.

Подпрограммы, которые прямо или косвенно рекурсивны, должны быть также реентрантными. Такая политика частично диктуется языками структурного программирования (такими как язык C). Однако подпрограмма не сможет быть реентрантной, если она работает с глобальными переменными, или если она использует какие-то статические переменные или данные, которые должны оставаться в сохранности до завершения работы вызова подпрограммы.

Это определение реентрантности отличается от определения реентрантности для потокобезопасного выполнения в многопоточной среде. Реентрантная подпрограмма может дать безопасность выполнения в потоке, но реентрантность сама по себе не гарантирует потокобезопасное выполнение во всех ситуациях. С другой стороны, потокобезопасный код не обязательно будет реентрантным (из английской Википедии).

Usage:

ccblkfn.exe [options] [files]

Options may be interspersed with files on the command line.

-@ < file >
        Places the contents of `file' (a file containing driver options)
        at the current position on the command line.

-A < name >[(< tokens >)]
        Asserts `name' as a predicate with the specified `tokens' as if
        by a #assert preprocessor directive.

-add-debug-libpaths
        Automatically adds a 'Debug' subfolder search path for each
        standard library search path passed to the linker.

-alttok Allows alternative operator keywords and digraph sequences to
        appear in source files.

-always-inline
        Always inline functions that are marked 'inline'.

-anach  Indicates that anachronisms are to be allowed when source files
        written in ANSI C++ are being compiled.

-annotate
        Enables the annotation of assembly files (default).

-annotate-loop-instr
        Provides additional annotation information for the prolog,
        kernel and epilog of loops

-auto-attrs
        Creates a number of file attributes based on the contents of the
        source file.

-bss    Put zero-initialized global data into a BSS section.

-build-lib
        Instructs the driver to build an archive library from any
        resulting objects on the command line instead of invoking the
        linker to create an executable file.

-C      Preserves comments in any preprocessed output.

-c      Suppresses the link editing phase of the compilation and does
        not remove any object files created during compilation.

-c++    Indicates that source files written in C++ are to be compiled.

-c89    Indicates that source files written in ISO/IEC 9899:1990 with
        Analog language extensions are to be compiled. (default)

-c99    Indicates that source files written in ISO/IEC 9899:1999 with
        Analog language extensions are to be compiled.

-check-init-order
        If your program uses global objects with constructors, and has
        multiple source modules, it is not guaranteed that the objects'
        constructors will have run before the objects are used. The
        -check-init-order option will insert diagnostic code to check
        initialization has happened, at point of use. Not recommended
        for production code.

-const-read-write
        A pointer to const may access non-readonly data (as in ANSI/ISO
        C).

-const-strings
        Indicates that strings literals should be const qualified.

-cplbs  The compiler should assume that memory accesses and code will be
        validated by the Cache Protection Lookaside Buffers. This allows
        the compiler to be more aggressive in dealing with potential
        invalid memory accesses or indirect pointer instructions.

-D < name >[=< def >]
        Defines preprocessor macro `name' to have definition `def' (if
        `def' is omitted then `name' is defined to be 1).

-dcplbs The compiler should assume that data memory accesses will be
        validated by the Data Cache Protection Lookaside Buffers. This
        allows the compiler to be more aggressive in dealing with
        potential invalid memory accesses.

-decls-strong
        Treat uninitialized global variables as strong definitions, i.e.
        global "int x;" is equivalent to global "int x = 0;".

-decls-weak
        Treat uninitialized global variables as weak definitions, i.e.
        global "int x;" is equivalent to "extern int x;".

-double-size-any
        Specifies that the resulting object files should be marked in
        such a way that will enable them to be linked against objects
        built with doubles either 32-bit or 64-bit in size.

-double-size-{32|64}
        Forces type double to be in 32-bit IEEE single-precision format
        (`-double-size-32') or 64-bit IEEE double-precision format
        (`-double-size-64').

-dry    Displays main driver actions but does not perform them.

-dryrun Displays driver actions but does not perform them.

-E      Do preprocessing only.

-ED     Similar to `-EE' but sends all output to a file. This option
        will always override the -MM option.

-EE     Similar to `-E' but does not halt compilation after
        preprocessing.

-eh     Enables C++ exception handling.

-enum-is-int
        By default enums can have a type larger than int. This option
        ensures the enum type is int.

-expand-symbolic-links
        Enables support for Cygwin style paths on the command line and
        in include directives.

-expand-windows-shortcuts
        Enables support for Windows Shortcuts on the command line and in
        include directives.

-expert-linker
        Provides the link line used initially by the Expert Linker.

-extern-inline
        Enables support for inline functions with external linkage in
        C++.

-extra-keywords
        Enables recognition of the Analog C extension keywords.

-extra-loop-loads
        Loops that walk through memory ranges are allowed to read past
        the end of the range without ill effects. Can improve
        performance.

-fast-fp
        Use faster, less-accurate, non-IEEE floating point routines.

-file-attr < name >[=< attr >]
        Defines object file attribute `name' to have definition `attr'
        (if `attr' is omitted then `attr' is defined to be 1).

-fixed-point-io
        Instructs the compiler to use the optimized reduced feature
        stdio.h function definitions with support for fixed-point types.
        Causes the definition of macro _ADI_FX_LIBIO in both the
        compiler and linker.

-flags-< asm|compiler|ipa|lib|link|prelink > < arg1 >[,arg2...]
        Passes each of the comma-separated arguments to the specified
        compilation tool - the tools are the assembler, compiler, IPA
        solver, library builder, linker and prelinker respectively.

-force-circbuf
        Treat array references of the form array[i%n] as circular buffer
        operations.

-force-link
        Always create a new stack frame for leaf functions.(defaults to
        on for -g, enforced for -p options.)

-fp-associative
        Treat floating point multiply and addition as associative.

-friend-injection
        Enable non-standard name lookup for class or function names
        declared as friends.

-full-dependency-inclusion
        Instructs the compiler to include implicitly included .cpp files
        more than once when generating dependencies. Use of this switch
        may increase dependency generation time.

-full-io
        Instructs the compiler to use full feature ANSI-compliant
        stdio.h function definitions. Causes the definition of macro
        _DINKUM_IO in both the compiler and linker.

-full-version
        Displays the version number of the driver and any processes
        invoked by the driver.

-fx-contract
        Set the default state of the FX_CONTRACT pragma to be ON.

-fx-rounding-mode-biased
        Set the default state of the FX_ROUNDING_MODE pragma to be
        BIASED.

-fx-rounding-mode-truncation
        Set the default state of the FX_ROUNDING_MODE pragma to be
        TRUNCATION.

-fx-rounding-mode-unbiased
        Set the default state of the FX_ROUNDING_MODE pragma to be
        UNBIASED.

-g      Causes the compiler to generate additional information in the
        generated code required for the use of debuggers.

-glite  Causes the compiler to remove any unneeded debug information
        which reduce executable and library size compared to -g.

-guard-vol-loads
        Guard volatile loads against being interrupted and restarted, by
        disabling interrupts during the loads.

-H      Do preprocessing only, but only output a list of the names of
        files that have been #included.

-HH     Similar to `-H' but does not halt compilation after
        preprocessing.

-h[elp] Displays this quick-reference option summary.

-i      Indicates that only include files specified in double quotes
        should be listed when the -H or -M options are used.

-I < dir >[< ;|, >dir...]
        Adds `dir' to the list of directories searched for include files
        - multiple include directories are searched in the order
        specified and may be given as a semicolon- or comma-separated
        list of directories.

-I-     Establishes the point in the include directory list at which the
        search for header files enclosed in angle brackets should begin.

-icplbs The compiler should assume that program code will be validated by
        the Instruction Cache Protection Lookaside Buffers. This allows
        the compiler to be more aggressive in dealing with potential
        invalid indirect pointer instructions (ref. silicon anomaly
        05-00-0426 for potential use).

-ieee-fp
        Use slower floating point routines that fully conform to the
        IEEE floating point standard.

-ignore-std
        The compiler ignores namespace std in all standard library
        headers.

-implicit-inclusion
        Enables implicit inclusion of source files as a method of
        finding definitions of template entities to be instantiated.(C++
        only)

-implicit-pointers
        Forces the compiler to allow incompatible pointers as a
        discretionary warning.

-include < file >
        Instructs the compiler to process include file `file' before
        each of the source files given on the command line.

-instantlocal
        Instantiates all template entities that are used in this
        compilation. This switch also ensures that all templates are
        given internal linkage.

-ipa    Specifies that inter-procedural analysis should be performed for
        optimization between translation units. Using -ipa implicitly
        enables -O.

-jcs2l  Passes linker option -jcs2l, enabling conversion of short
        jumps/calls to long jumps/calls. Will use P1 register for
        indirect jumps/calls when long jumps/calls are insufficient.
        Enabled by default.

-L < dir >[< ;|, >dir...]
        Adds `dir' to the list of directories searched for libraries -
        multiple library directories are searched in the order specified
        and may be given as a semicolon- or comma-separated list of
        directories.

-l < lib >
        Include object library lib< lib >.dlb in the linker's command line
        and look for it in the library search path.

-list-workarounds
        Displays a list of the workarounds supported by the compiler.

-M      Do preprocessing only, but only output file dependencies
        suitable for use with make(1).

-map < file >
        Instructs the linker to produce a specified file containing a
        memory map of all symbols used in the link.

-MD     Similar to `-MM' but sends all output file dependencies to a
        file.

-mem    Instructs the driver to run the memory initializer after
        linking.

-misra  Causes the compiler to generate error messages for any
        constructs in a source file that do not conform to the ANSI C
        standard and MISRA:2004 Guidelines. Some rules are strictly
        enforced. The rules that are relaxed are documented in the
        compiler manual. Use -misra-strict if you require these rules to
        be strictly enforced.

-misra-linkdir
        For MISRA Rules requiring link-time checks .misra files are
        generated in the current working directory. This option places
        .misra files in a specified location.

-misra-no-cross-module
        Causes the compiler to generate error messages for any
        constructs in a source file that do not conform to the ANSI C
        standard and MISRA:2004 Guidelines. Does not check for rules
        requiring link time checking.

-misra-no-runtime
        Causes the compiler to generate error messages for any
        constructs in a source file that do not conform to the ANSI C
        standard and MISRA:2004 Guidelines. Does not check for rules
        requiring runtime checking.

-misra-strict
        Causes the compiler to generate error messages for any
        constructs in a source file that do not conform to the ANSI C
        standard and MISRA:2004 Guidelines.

-misra-suppress-advisory
        Suppresses reporting of any MISRA advisory rule.

-misra-testing
        Causes the compiler not to generate error messages for any
        library functions involving system heap allocation and io in a
        source file for testing, but otherwise implies -misra-strict.
        These library functions violate Rule 20 of the MISRA:2004
        Guidelines.

-MM     Similar to `-M' but does not halt compilation after
        preprocessing.

-Mo < output file >
        Specifies an output file name for make dependencies other than
        stdout. This switch should be used in conjunction with the -ED
        or -MD options.

-Mt < new target name >
        Specifies an alternative output file name for the make
        dependency target, other than the name that is automatically
        generated. This switch should be used in conjunction with the -M
        or -MM option.

-multicore
        Specifies that the users code will be linked with libraries that
        are re-entrant, which can be placed in shared sections of memory
        on a multi-core target. This option does not in any way verify
        that the users code is re-entrant.

-multiline
        Enables support for GNU multiline strings.

-never-inline
        Ignore 'inline' keyword on functions.

-no-alttok
        Does not allow alternative operator keywords and digraph
        sequences to appear in source files.

-no-anach
        Does not allow anachronisms when compiling ANSI C++ source
        files.

-no-annotate
        Disables the annotation of assembly files.

-no-annotate-loop-instr
        Disables production of additional loop annotation information
        (default)

-no-assume-vols-are-mmrs
        Instructs the compiler to not assume that volatile loads and
        stores are to MMR addresses and therefore candidates for any MMR
        related silicon errata workarounds.

-no-auto-attrs
        Disables automatic creation of file attributes.

-no-bss Put zero-initialized global data into a normal data section.

-no-builtin
        Instructs the compiler not to use any built-in functions except
        those whose names begin with a double underscore.

-no-circbuf
        Disables the automatic generation of circular buffering code.

-no-const-strings
        Indicates that strings literals should not be const qualified.

-no-defs
        Prevents the driver from passing any default assertions,
        preprocessor macros, include directories, library directories,
        libraries or startup modules to the compiler or linker and also
        disables the C keyword extensions.

-no-demangle
        Prevents the driver from filtering any errors from the linker
        through the C++ name demangler.

-no-eh  Disables C++ exception handling.

-no-expand-symbolic-links
        Disables support for Cygwin style paths on the command line and
        in include directives.

-no-expand-windows-shortcuts
        Enables support for Windows Shortcuts on the command line and in
        include directives.

-no-extern-inline
        Disables support for inline functions with external linkage in
        C++.

-no-extra-keywords
        Disables recognition of the Analog C extension keywords.

-no-force-link
        Do not create a new stack frame for leaf functions, if one can
        be omitted. Overrides the default for -g.

-no-fp-associative
        Do not treat floating point multiply and addition as
        associative.

-no-friend-injection
        Enable C++ standard name lookup for class or function names
        declared as friends.

-no-full-io
        Instructs the compiler to use the optimized reduced feature
        stdio.h function definitions. Causes the definition of macro
        _ADI_LIBIO in both the compiler and linker.

-no-fx-contract
        Set the default state of the FX_CONTRACT pragma to be OFF.

-no-implicit-inclusion
        Disables implicit inclusion of source files as a method of
        finding definitions of template entities to be instantiated.(C++
        only)

-no-int-to-fract
        Don't create saturating fract operations instead of integer
        ones.

-no-jcs2l
        Suppresses linker option -jcs2l for jump/call expansion.

-no-mem Prevents the driver from running the memory initializer after
        linking.

-no-multiline
        Disables support for GNU multiline strings.

-no-progress-rep-timeout
        Prevents the compiler from issuing a diagnostic message if the
        compilation exceeds a certain time limit.

-no-rtti
        Disables run-time type information. (C++ only).

-no-sat-associative
        Do not treat saturating addition as associative.

-no-saturation
        Don't create saturating operations instead of non-saturating
        ones.

-no-std-ass
        Causes any predefined assertions and predefined system-specific
        preprocessor macros to be ignored.

-no-std-def
        Prevents the driver from passing any predefined preprocessor
        macros to the compiler.

-no-std-inc
        Prevents the driver from passing any default include directories
        to the compiler.

-no-std-lib
        Prevents the driver from passing any default libraries or
        library directories to the linker.

-no-std-templates
        Enable traditional template parsing and name lookup.

-no-threads
        Specifies that all compiled code need not be thread-safe.

-no-utility-rom
        Do not link against the Tools Utility ROM (ADSP-BF592-A only).
        This switch passes the macro NO_UTILITY_ROM to the linker and is
        the default behavior when compiling for silicon revisions
        'none', 'any', 0.0 and 0.1.

-no-workaround < workaround >[,< workaround >]
        Disable code generator workarounds for specific hardware errata.
        Valid workarounds are listed below.

-no-zero-loop-counters
        Disables the zeroing of loop counters on function exit.

-o < file >
        Produces an output file with a name given by `file' instead of
        using the name derived via the default rules.

-Oa     Turns on auto-inlining, which can be controlled by -Ov.

-Ofp    Offsets the Frame Pointer from the start of the frame if it will
        allow more short load/store instructions.

-Og     Produces code with debugging information which is optimized as
        far as is possible while retaining the full features of debug
        mode (-g).

-Os     Produces code which is optimized for minimal code size which may
        not be code which gives the best performance.

-Ov < num >
        Controls speed vs size optimizations. 'num' should be an integer
        between 0 (purely size) and 100 (purely speed).

-overlay
        Specifies that functions may be in overlays and directs the
        compiler not to track which scratch registers are clobbered over
        a function call.

-overlay-clobbers < clob1 >[,clob2...]
        Specifies the registers clobbered by the overlay manager.

-O[0|1] Turns on all compiler optimizations (`-O' or `-O1'), while `-O0'
        turns off all optimizations.

-P      Do preprocessing only, but do not include line control
        information.

-p      Generate additional information in the final executable for use
        with the profiling utility profblkfn. Writes profile data to
        standard output and the file ./mon.out.

-p1     As -p, but only write data to the file ./mon.out.

-p2     As -p, but only write data to standard output.

-path-< asm|compiler|ipa|lib|link|prelink > < path >
        Uses the compilation tool specified in `path' - the tools are
        the assembler, compiler, IPA solver, library builder, linker and
        prelinker respectively.

-path-install < file >
        Specifies the installation directory of the compiler, tools,
        libraries and include files.

-path-output < dir >
        Specifies a directory other than the current directory to place
        all non-temporary output files in.

-path-temp < dir >
        Specifies that the driver should create temporary files in
        `dir'.

-pch    Enables automatic generation and use of precompiled header
        files.

-pchdir < dir >
        Specifies `dir' as an alternative directory to `PCHRepository'
        in which to store precompiled header files.

-pgo-session < session-id >
        Specify the PGO session id string for this compilation, both for
        generating the PGO information in the final executable and for
        selecting a session if results from a previous PGO run are
        given.

-pguide Generate additional information in the final executable for
        Profile Guided Optimization. When run on a simulator, metrics
        will be gathered on how often each part of the application is
        executed.

-PP     Similar to `-P' but does not halt compilation after
        preprocessing.

-pplist < file >
        Writes raw preprocessing listing information to a specified
        file.

-proc < identifier >
        Instructs the compiler to produce code suitable for the
        specified DSP.

-progress-rep-func
        Issues a diagnostic message each time the compiler begins
        compiling a new function.

-progress-rep-opt
        Issues a diagnostic message each time the compiler starts a new
        optimization pass on a function.

-progress-rep-timeout
        Issues a diagnostic message if the compiler exceeds a time limit
        during compilation. This indicates the compiler is still
        operating - just taking a long time.

-progress-rep-timeout-secs
        Specifies how many seconds must elapse during a compilation
        before the compiler issues a diagnostic about the length of time
        uses so far.

-r      Specifies that any resulting relocatable object files are to be
        combined into one relocatable object file for later relinking.

-R < dir >[< ;|, >dir...]
        Adds `dir' to the list of directories searched for source files
        - multiple source directories are searched in the order
        specified and may be given as a semicolon- or comma-separated
        list of directories.

-R-     Removes all directories from the source file search directory
        list.

-reserve < reg1 >[,reg2...]
        Prevents the compiler from using certain registers.

-rtti   Enables run-time type information. (C++ only).

-s      Instructs the linker to remove any debugging information from
        the resulting object file, and also remove the symbol table from
        the resulting executable file.

-S      Suppresses the assembler and link editing phases of the
        compilation and produces an assembler file instead.

-sat-associative
        Treat saturating addition as associative.

-save-temps
        Prevents any temporary files that have been created by the
        driver or compiler from being deleted.

-sdram  The compiler should assume that at least bank 0 of external
        SDRAM will be present and enabled. This allows the compiler to
        be more aggressive in dealing with potential invalid memory
        accesses.

-section < identifier >=< section >[,< identifier >=< section >...]
        Directs the compiler to place internal structures of type
        < identifier > into memory section < section > rather than the
        default location.

-show   Displays the command line that was passed to the driver,
        including the expansion of options files and environment
        variables.

-si-revision < none|any|x.x >
        Sets the silicon revision for the build, with x.x being the
        revision number for the hardware. If -si-revision is not used
        the tools target a default revision from the supported
        revisions.

-signed-bitfield
        Forces plain int bitfields to be signed.

-signed-char
        Forces plain char to be signed.

-stack-detect
        Causes the compiler to generate additional instructions in the
        generated code to detect a potential stack overflow.

-std-templates
        Enable C++ standard template parsing and name lookup.

-structs-do-not-overlap
        Assume no overlap in memory accessed during copies of structures
        so that these may be implemented by memcpy.

-syntax-only
        Performs syntax checking only - no code is generated.

-sysdefs
        Instructs the driver to define preprocessor macros that describe
        the current user and machine.

-T < file >
        Specifies that `file' should be used in place of the default
        linker description file.

-threads
        Specifies that the users code will be linked with threadsafe
        libraries. This option does not in any way verify the thread
        safety of the users own code.

-time   Displays timing information for processes invoked by the driver.

-U < name >
        Undefines preprocessor macro `name' after all other `-D' options
        on the command line have been processed.

-unsigned-bitfield
        Forces plain int bitfields to be unsigned.

-unsigned-char
        Forces plain char to be unsigned.

-utility-rom
        Link against the Tools Utility ROM (ADSP-BF592-A only). This is
        the default behaviour when compiling for silicon revision 0.2
        onwards.

-v      Displays the command line and version number of the driver and
        any processes invoked by the driver.

-verbose
        Displays the command lines of each of the processes that the
        driver invokes.

-w      Suppresses warning messages from the driver and compiler.

-warn-protos
        Cause the compiler to issue warnings about any functions for
        which full prototypes are not supplied.

-Werror-limit < limit >
        Sets the compiler error limit to `limit' which will cause
        compilation to be abandoned after this number of errors.

-Werror-warnings
        Cause the compiler to issue errors for any diagnostics that
        would usually be warnings.

-Wmis_suppress
        Expects a list of MISRA rule numbers and ensures that rule
        violations are not reported.

-Wmis_warn
        Expects a list of MISRA rule numbers and ensures that rule
        violations are reported as warnings.

-workaround < workaround >[,< workaround >...]
        Enables code generator workaround for specific hardware errata.
        Valid workarounds are listed below.

-Wremarks
        Indicates that the compiler may issue remarks, which are
        diagnostic messages even milder than warnings.

-Wterse Displays compiler messages in a shorter form.

-W{error|remark|suppress|warn} < num >[,num...]
        Overrides the severity of specific compilation diagnostic
        messages, where `num' is a number representing the message to
        override.

-xref < file >
        Writes cross-reference listing information to a specified file.

-zero-loop-counters
        Enables the zeroing of loop counters on function exit.This
        switch is provided for users writing initcodes, which are invoked
        by BootROMs that do not obey the compiler's ABI.

Valid workarounds for this processor architecture (Blackfin) are:

        csync, isr-ssync, isr-imask-check, wt-dcache, wb-dcache,
        astat-rnd_mod, avoid-dag1, killed-mmr-write, sdram-mmr-read,
        dreg-comp-latency, signbits, testset-align, scratchpad-read,
        shift, speculative-loads, speculative-syncs, cycles-stores,
        l2-testset-stall, avoid-ldf-boundaries, infinite-stall-202,
        no-cplbs-spec-protect-246, short-loop-exceptions-257,
        pre-loop-end-sync-stall-264, lost-stores-to-data-cache-262,
        stalled-mmr-write-283, mem_branch_mem_F3_F_021,
        spec_multiply_F3-F-008013, flags-mmr-anom-311,
        sync-loop-anom-312, avoid-quick-rts-371, 05000428, 05000426,
        05000443, 05000412, 05000010, 05000477.

[Ссылки]

1. Blackfin ADSP-BF538.
2. Что такое Interprocedural Analysis (IPA).
3. Программирование шаблонов C++ для идиотов.
4. VisualDSP++ 5.0 C/C++ Compiler and Library Manual for Blackfin Processors site:analog.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page