3.19.43 Параметры 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 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-13.3.0/gcc/RX-Options.html