Опции командной строки компилятора 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]).
Обратите внимание, что alldata это не реальный вид секции, а место хранения для data, constdata, bsz, strings и autoinit. Таким образом, -section alldata=X будет эквивалентно -section data=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 > -A < name >[(< tokens >)] -add-debug-libpaths -alttok Allows alternative operator keywords and digraph sequences to -always-inline -anach Indicates that anachronisms are to be allowed when source files -annotate -annotate-loop-instr -auto-attrs -bss Put zero-initialized global data into a BSS section. -build-lib -C Preserves comments in any preprocessed output. -c Suppresses the link editing phase of the compilation and does -c++ Indicates that source files written in C++ are to be compiled. -c89 Indicates that source files written in ISO/IEC 9899:1990 with -c99 Indicates that source files written in ISO/IEC 9899:1999 with -check-init-order -const-read-write -const-strings -cplbs The compiler should assume that memory accesses and code will be -D < name >[=< def >] -dcplbs The compiler should assume that data memory accesses will be -decls-strong -decls-weak -double-size-any -double-size-{32|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 -EE Similar to `-E' but does not halt compilation after -eh Enables C++ exception handling. -enum-is-int -expand-symbolic-links -expand-windows-shortcuts -expert-linker -extern-inline -extra-keywords -extra-loop-loads -fast-fp -file-attr < name >[=< attr >] -fixed-point-io -flags-< asm|compiler|ipa|lib|link|prelink > < arg1 >[,arg2...] -force-circbuf -force-link -fp-associative -friend-injection -full-dependency-inclusion -full-io -full-version -fx-contract -fx-rounding-mode-biased -fx-rounding-mode-truncation -fx-rounding-mode-unbiased -g Causes the compiler to generate additional information in the -glite Causes the compiler to remove any unneeded debug information -guard-vol-loads -H Do preprocessing only, but only output a list of the names of -HH Similar to `-H' but does not halt compilation after -h[elp] Displays this quick-reference option summary. -i Indicates that only include files specified in double quotes -I < dir >[< ;|, >dir...] -I- Establishes the point in the include directory list at which the -icplbs The compiler should assume that program code will be validated by -ieee-fp -ignore-std -implicit-inclusion -implicit-pointers -include < file > -instantlocal -ipa Specifies that inter-procedural analysis should be performed for -jcs2l Passes linker option -jcs2l, enabling conversion of short -L < dir >[< ;|, >dir...] -l < lib > -list-workarounds -M Do preprocessing only, but only output file dependencies -map < file > -MD Similar to `-MM' but sends all output file dependencies to a -mem Instructs the driver to run the memory initializer after -misra Causes the compiler to generate error messages for any -misra-linkdir -misra-no-cross-module -misra-no-runtime -misra-strict -misra-suppress-advisory -misra-testing -MM Similar to `-M' but does not halt compilation after -Mo < output file > -Mt < new target name > -multicore -multiline -never-inline -no-alttok -no-anach -no-annotate -no-annotate-loop-instr -no-assume-vols-are-mmrs -no-auto-attrs -no-bss Put zero-initialized global data into a normal data section. -no-builtin -no-circbuf -no-const-strings -no-defs -no-demangle -no-eh Disables C++ exception handling. -no-expand-symbolic-links -no-expand-windows-shortcuts -no-extern-inline -no-extra-keywords -no-force-link -no-fp-associative -no-friend-injection -no-full-io -no-fx-contract -no-implicit-inclusion -no-int-to-fract -no-jcs2l -no-mem Prevents the driver from running the memory initializer after -no-multiline -no-progress-rep-timeout -no-rtti -no-sat-associative -no-saturation -no-std-ass -no-std-def -no-std-inc -no-std-lib -no-std-templates -no-threads -no-utility-rom -no-workaround < workaround >[,< workaround >] -no-zero-loop-counters -o < file > -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 -Og Produces code with debugging information which is optimized as -Os Produces code which is optimized for minimal code size which may -Ov < num > -overlay -overlay-clobbers < clob1 >[,clob2...] -O[0|1] Turns on all compiler optimizations (`-O' or `-O1'), while `-O0' -P Do preprocessing only, but do not include line control -p Generate additional information in the final executable for use -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 > -path-install < file > -path-output < dir > -path-temp < dir > -pch Enables automatic generation and use of precompiled header -pchdir < dir > -pgo-session < session-id > -pguide Generate additional information in the final executable for -PP Similar to `-P' but does not halt compilation after -pplist < file > -proc < identifier > -progress-rep-func -progress-rep-opt -progress-rep-timeout -progress-rep-timeout-secs -r Specifies that any resulting relocatable object files are to be -R < dir >[< ;|, >dir...] -R- Removes all directories from the source file search directory -reserve < reg1 >[,reg2...] -rtti Enables run-time type information. (C++ only). -s Instructs the linker to remove any debugging information from -S Suppresses the assembler and link editing phases of the -sat-associative -save-temps -sdram The compiler should assume that at least bank 0 of external -section < identifier >=< section >[,< identifier >=< section >...] -show Displays the command line that was passed to the driver, -si-revision < none|any|x.x > -signed-bitfield -signed-char -stack-detect -std-templates -structs-do-not-overlap -syntax-only -sysdefs -T < file > -threads -time Displays timing information for processes invoked by the driver. -U < name > -unsigned-bitfield -unsigned-char -utility-rom -v Displays the command line and version number of the driver and -verbose -w Suppresses warning messages from the driver and compiler. -warn-protos -Werror-limit < limit > -Werror-warnings -Wmis_suppress -Wmis_warn -workaround < workaround >[,< workaround >...] -Wremarks -Wterse Displays compiler messages in a shorter form. -W{error|remark|suppress|warn} < num >[,num...] -xref < file > -zero-loop-counters Valid workarounds for this processor architecture (Blackfin) are: csync, isr-ssync, isr-imask-check, wt-dcache, wb-dcache, [Ссылки] 1. Blackfin ADSP-BF538. |