Spec-Zone.ru › GCC 12

3.19.46 Параметры 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 также включается автоматически. Это связано с тем, что сами инструкции 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, 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-12.2.0/gcc/RX-Options.html

Spec-Zone.ru

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