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-
При генерации выходного ассемблерного кода используйте синтаксис, совместимый с ассемблером AS100 Renesas. Этот синтаксис также может обрабатываться ассемблером 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 Group User’s Manual для получения дополнительной информации).По умолчанию эти инструкции разрешены, но 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-11.4.0/gcc/RX-Options.html