3.18.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 также автоматически включен. Это связано с тем, что инструкции 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-
Используется среда выполнения симулятора. По умолчанию используется среда выполнения 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.
Далее: Параметры S/390 и zSeries, Предыдущий: Параметры RS/6000 и PowerPC, Наверх: Параметры подмодели [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/RX-Options.html