3.17.39 Параметры RX
Эти параметры командной строки определены для целей RX:
-
-m64bit-doubles-m32bit-doubles - Установить размер типа данных
doubleв 64 бита (-m64bit-doubles) или 32 бита (-m32bit-doubles). По умолчанию используется-m32bit-doubles. Примечание Аппаратное обеспечение RX для чисел с плавающей запятой работает только с 32-битными значениями, поэтому значение по умолчанию —-m32bit-doubles. -
-fpu-nofpu - Включает (
-fpu) или отключает (-nofpu) использование аппаратного обеспечения RX для чисел с плавающей запятой. По умолчанию включено для серии RX600 и выключено для серии RX200.Инструкции с плавающей запятой генерируются только для 32-битных чисел с плавающей запятой, поэтому аппаратное обеспечение FPU не используется для чисел двойной точности, если используется параметр
-m64bit-doubles.Примечание Если параметр
-fpuвключен, то-funsafe-math-optimizationsтакже автоматически включается. Это связано с тем, что инструкции RX FPU сами по себе небезопасны. -
-mcpu=name - Выбирает тип процессора RX для цели. В настоящее время поддерживаются три типа: общее аппаратное обеспечение серии RX600 и RX200, а также конкретный процессор RX610. Значение по умолчанию — RX600.
Единственное различие между RX600 и RX610 заключается в том, что RX610 не поддерживает инструкцию
MVTIPL.Серия RX200 не имеет блока вычислений с плавающей запятой, поэтому
-nofpuвключено по умолчанию при выборе этого типа. -
-mbig-endian-data-mlittle-endian-data - Хранение данных (но не кода) в формате big-endian. По умолчанию используется
-mlittle-endian-data, т.е. хранение данных в формате little-endian. -
-msmall-data-limit=N - Указывает максимальный размер в байтах глобальных и статических переменных, которые могут быть помещены в небольшую область данных. Использование небольшой области данных может привести к более компактному и быстрому коду, но размер области ограничен, и программисту необходимо убедиться, что область не переполняется. Кроме того, при использовании небольшой области данных один из регистров RX (обычно
r13) резервируется для указания на эту область, поэтому он больше недоступен для использования компилятором. Это может привести к более медленному и/или большему коду, если переменные помещаются в стек вместо хранения в этом регистре.Примечание: общие переменные (переменные, которые не были инициализированы) и константы не помещаются в небольшую область данных, так как они назначаются в другие секции в исполняемом файле.
Значение по умолчанию равно нулю, что отключает эту функцию. Обратите внимание, что эта функция по умолчанию не включена при более высоких уровнях оптимизации (
-O2и т.д.), из-за потенциально негативного влияния на резервирование регистра. Программист должен самостоятельно экспериментировать и определять, полезна ли эта функция для его программы. См. описание параметра-mpidдля описания того, как выбирается фактический регистр для хранения указателя на небольшую область данных. -
-msim-mno-sim - Использовать симулятор runtime. По умолчанию используется runtime libgloss, специфичный для платы.
-
-mas100-syntax-mno-as100-syntax - При генерации выходных данных ассемблера использовать синтаксис, совместимый с ассемблером Renesas AS100. Этот синтаксис также может обрабатываться ассемблером GAS, но имеет некоторые ограничения, поэтому по умолчанию не генерируется.
-
-mmax-constant-size=N - Указывает максимальный размер в байтах константы, которая может быть использована в качестве операнда в инструкции RX. Хотя набор инструкций RX позволяет использовать константы длиной до 4 байт в инструкциях, более длинное значение эквивалентно более длинной инструкции. Таким образом, в некоторых случаях может быть полезно ограничить размер констант, используемых в инструкциях. Слишком большие константы вместо этого помещаются в пул констант и ссылаются через косвенное обращение к регистру.
Значение N может быть от 0 до 4. Значение 0 (по умолчанию) или 4 означает, что константы любого размера разрешены.
-mrelax- Включить релаксацию линковщика. Релаксация линковщика — это процесс, в котором линковщик пытается уменьшить размер программы, находя более короткие варианты различных инструкций. Отключено по умолчанию.
-
-mint-register=N - Указывает количество регистров, которые нужно зарезервировать для быстрых обработчиков прерываний. Значение N может быть от 0 до 4. Значение 1 означает, что регистр
r13зарезервирован для эксклюзивного использования быстрых обработчиков прерываний. Значение 2 резервируетr13иr12. Значение 3 резервируетr13,r12иr11, а значение 4 резервируетr13доr10. Значение 0, по умолчанию, не резервирует регистров. -msave-acc-in-interrupts- Указывает, что функции обработчиков прерываний должны сохранять регистр аккумулятора. Это необходимо только в том случае, если обычный код может использовать регистр аккумулятора, например, потому что он выполняет 64-битные умножения. По умолчанию регистр аккумулятора игнорируется, так как это ускоряет обработчики прерываний.
-
-mpid-mno-pid - Включает генерацию независимых от позиции данных. При включении любой доступ к константным данным осуществляется через смещение от базового адреса, хранящегося в регистре. Это позволяет определить расположение константных данных во время выполнения без необходимости перемещения исполняемого файла, что выгодно для встроенных приложений с ограниченным объемом памяти. Данные, которые могут быть изменены, не затрагиваются этим параметром.
Примечание: использование этой функции резервирует регистр, обычно
r13, для базового адреса константных данных. Это может привести к более медленному и/или большему коду, особенно в сложных функциях.Файктуальный регистр, выбранный для хранения базового адреса константных данных, зависит от того, включены ли параметры командной строки
-msmall-data-limitи/или-mint-register. Начиная с регистраr13и двигаясь вниз, регистры сначала выделяются для удовлетворения требований-mint-register, затем-mpidи, наконец,-msmall-data-limit. Таким образом, возможно, что регистр небольшой области данных будетr8, если оба параметра-mint-register=4и-mpidуказаны в командной строке.По умолчанию эта функция отключена. Значение по умолчанию можно восстановить с помощью параметра командной строки
-mno-pid. -
-mno-warn-multiple-fast-interrupts-mwarn-multiple-fast-interrupts - Предотвращает выпуск сообщения GCC с предупреждением, если при компиляции файла обнаружено более одного быстрого обработчика прерываний. По умолчанию выводится предупреждение за каждый дополнительный быстрый обработчик прерываний, так как RX поддерживает только одно такое прерывание.
Примечание: параметр командной строки GCC -ffixed-reg имеет особое значение для порта RX, когда используется с атрибутом функции interrupt. Этот атрибут указывает на функцию, предназначенную для обработки быстрых прерываний. GCC гарантирует, что он использует только регистры r10, r11, r12 и/или r13, и только при условии, что обычное использование соответствующих регистров ограничено с помощью параметров командной строки -ffixed-reg или -mint-register.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/RX-Options.html