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