3.19.45 Опции 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. Это связано с тем, что инструкции аппаратного обеспечения FPU RX сами по себе небезопасны.
-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-
Использовать исполняемый модуль симулятора. По умолчанию используется специфичная для платы среда выполнения libgloss.
-mas100-syntax-mno-as100-syntax-
При генерации ассемблерного кода использовать синтаксис, совместимый с ассемблером Renesas’s 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 поддерживает только один такой обработчик.
-mallow-string-insns-mno-allow-string-insns-
Включает или отключает использование инструкций обработки строк
SMOVF,SCMPU,SMOVB,SMOVU,SUNTILSWHILEи также инструкциюRMPA. Эти инструкции могут предварительно загружать данные, что небезопасно при доступе к регистру ввода/вывода. (Дополнительную информацию см. в разделе 12.2.7 Руководства пользователя группы RX62N).По умолчанию эти инструкции разрешены, но GCC не может надежно определить все ситуации, когда инструкция обработки строк может использоваться для доступа к регистру ввода/вывода, поэтому их автоматическое отключение невозможно. Вместо этого программисту необходимо использовать параметр -mno-allow-string-insns, если его программа обращается к пространству ввода/вывода.
При включении инструкций GCC определяет символ препроцессора C
__RX_ALLOW_STRING_INSNS__, в противном случае определяет символ__RX_DISALLOW_STRING_INSNS__. -mjsr-mno-jsr-
Использовать только (или не только) инструкции
JSRдля доступа к функциям. Этот параметр может использоваться, когда размер кода превышает диапазон инструкцийBSR. Обратите внимание, что -mno-jsr не означает, что не использоватьJSR, а вместо этого означает, что можно использовать любой тип разветвления.
Примечание: Общий параметр командной строки 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-10.5.0/gcc/RX-Options.html