Spec-Zone.ru › GCC 11

Далее: Параметры S/390 и zSeries, Предыдущее: Параметры IBM RS/6000 и PowerPC, Вверх: Параметры, зависящие от модели машины [Оглавление][Индекс]

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, SUNTIL SWHILE а также инструкцию 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.

Далее: Параметры S/390 и zSeries, Предыдущее: Параметры IBM RS/6000 и PowerPC, Вверх: Параметры, зависящие от модели машины [Оглавление][Индекс]

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API