Spec-Zone.ru › GCC 7

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

Spec-Zone.ru

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