3.18.40 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 не используется для чисел double, если используется параметр -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 выдавать сообщение об ошибке, если он обнаруживает более одного обработчика быстрых прерываний при компиляции файла. По умолчанию для каждого дополнительного обработчика быстрых прерываний, обнаруженного 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-7.5.0/gcc/RX-Options.html