Spec-Zone.ru › GCC 15

3.20.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. Это связано с тем, что инструкции FPU RX сами по себе небезопасны.

-mcpu=name

Выбирает тип целевого процессора RX. В настоящее время поддерживаются три типа: универсальные аппаратные платформы серий «RX600» и «RX200», а также конкретный процессор «RX610». По умолчанию используется «RX600».

Единственное различие между «RX600» и «RX610» состоит в том, что «RX610» не поддерживает инструкцию MVTIPL.

В серии «RX200» отсутствует аппаратный блок для операций с плавающей точкой, поэтому при выборе этого типа по умолчанию включается -nofpu.

-mbig-endian-data
-mlittle-endian-data

Сохраняет данные (но не код) в формате с порядком байтов от старшего к младшему. По умолчанию используется -mlittle-endian-data, то есть данные сохраняются в формате с порядком байтов от младшего к старшему.

-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. Таким образом, если в командной строке указаны и -mint-register=4, и -mpid, регистром области малых данных может стать r8.

По умолчанию эта функция отключена. Настройку по умолчанию можно восстановить с помощью параметра командной строки -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.)

По умолчанию эти инструкции разрешены, но 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-15.3.0/gcc/RX-Options.html

Spec-Zone.ru

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