Используя ассемблер
В этой главе описываются, как работать as
ассемблер, производящий объектный файл из одного или более файлов исходного кода ассемблера.
Синтаксис команды
Для выполнения ассемблера введите следующую команду в оболочке:
as [ option ] ... [ file ] ... |
Можно указать один или несколько параметров командной строки. Эти ассемблерные опции описаны в Ассемблерных Опциях.
Можно указать один или несколько файлов, содержащих исходный код ассемблера. Если никакие файлы не указаны, as
использует стандартный ввод (stdin
) для сборочного исходного ввода.
Ассемблерные опции
Следующие параметры командной строки распознаны ассемблером:
- o
-o name |
Параметр имени после -o
используется в качестве имени as
выходной файл, вместо a.out
.
--
-- |
Используйте стандартный ввод (stdin
) для сборочного исходного ввода.
- f
-f |
Быстро; никакая потребность работать app
(ассемблерный препроцессор). Эта опция предназначается для использования компиляторами, производящими ассемблерный код в строгом «чистом» формате, указывающем точно, куда может пойти пробел. app
препроцессор должен быть выполнен на рукописных сборочных файлах и на файлах, предварительно обработанных cpp
(препроцессор C). Когда ассемблерные файлы собраны с помощью, это обычно необходимо cc(1)
команда, автоматически выполняющая препроцессор C на сборочных исходных файлах. Ассемблерные полосы препроцессора избыточные пробелы, поворачивает каждый символ, окруженный единственными кавычками в десятичную константу, и поворачивает случаи:
# number filename level |
в:
.line number;.file filename |
Ассемблерный препроцессор может также быть выключен путем запуска сборочного файла с #NO_APP\n
. Когда ассемблерный препроцессор был выключен таким образом, он может быть включен и выключен с парами #APP\n
и #NO_APP\n
в начале строк. Это используется компилятором для обертывания сборочных операторов, произведенных из asm()
операторы.
- g
-g |
Произведите отладочную информацию для символьного отладчика gdb(1)
таким образом, сборочный источник может быть отлажен символически. Для включают файлы (включенный препроцессором C #include
или согласно ассемблерной директиве .include
) тот продукт инструкции в (__TEXT,__text
) раздел, включать файл должен быть включен в то время как a .text
директива имеет силу (т.е. должен быть a .text
директива перед тем, чтобы включать) и конец с a .text
директива в действительности (в конце включать файла). Иначе отладчик испытает затруднения при контакте с тем сборочным файлом.
- v
-v |
Распечатайте версию ассемблера (и версия OS X и версия GNU, на которой это основывается).
- n
-n |
Не предполагайте, что сборочный файл запускается с a .text
директива.
- Я
-Idir |
Добавьте dir к списку каталогов для поиска файлов, включенных с .include
директива. Место по умолчанию для поиска является текущим каталогом.
- L
-L |
Сохраните определенные метки, начинающиеся L
(компилятор генерирует эти временные метки). Временные метки обычно отбрасываются для оставления свободного места в получающейся таблице символов.
- V
-V |
Распечатайте путь и вызов командной строки ассемблера, который использует ассемблерный драйвер.
- W
-W |
Подавите предупреждения.
- динамичный
-dynamic |
Активирует опции динамического подключения. Это - значение по умолчанию.
- статичный
-static |
Заставляет ассемблер обрабатывать любые функции динамического подключения как ошибку. Это также вызывает .text
директива для не включения pure_instructions
атрибут раздела.
Опции архитектуры
Программа /usr/bin/as
драйвер, выполняющий ассемблеры для определенных целевых архитектур. Если никакая целевая архитектура не указана, это принимает значение по умолчанию к архитектуре узла, на котором это работает.
- дуга
-arch arch_type |
Указывает целевую архитектуру, arch_type, ассемблер, который будет выполняться и архитектура файла полученного объекта. Целевые ассемблеры для каждой архитектуры находятся в /usr/libexec/gcc/darwin/
arch_type/as
или /usr/local/libexec/gcc/darwin/
arch_type/as
. Указанная целевая архитектура может быть определенным процессором, когда файл полученного объекта отмечен для определенного процессора. См. тогда страницу справочника arch(3)
поскольку текущий список определенного процессора называет для -arch
опция.
- force_cpusubtype_ALL
-force_cpusubtype_ALL |
Установите архитектуру файла полученного объекта к типу ALL независимо от инструкций в сборочном вводе.
- arch_multiple
-arch_multiple |
Это используется cc(1)
программа драйвера, когда это выполняется с кратным числом -arch
arch_type отмечает и сообщает программам как as(1)
это, если это распечатывает какие-либо сообщения, для предшествования им с одной строкой, утверждая название программы — в этом случае as
— и архитектура (от -arch
флаг arch_type) для различения, к которому относится архитектура сообщения об ошибках. Этот флаг принят только фактическими ассемблерами (в /lib/
arch_type/as
) а не ассемблерным драйвером, /bin/as
.
Специфичные для PowerPC опции
Следующие разделы описывают опции, определенные для архитектуры PowerPC.
- no_ppc601
-no_ppc601 |
Обработайте любой PowerPC 601 инструкция как ошибка.
- static_branch_prediction_Y_bit
-static_branch_prediction_Y_bit |
Обработайте единственное запаздывание +
или -
после условной команды перехода PowerPC, поскольку статическое предсказание ветвлений, устанавливающее Y, укусило в коде операции. Пары запаздывания ++
или --
всегда устанавливайте биты AT. Это - значение по умолчанию для OS X.
- static_branch_prediction_AT_bits
-static_branch_prediction_AT_bits |
Обработайте единственное запаздывание +
или -
после условного Питания команда перехода PC, поскольку статическое предсказание ветвлений устанавливает биты AT в коде операции. Пары запаздывания ++
или --
всегда устанавливайте биты AT, но с этой опцией выпущено предупреждение, если используется тот синтаксис. С этим флагом ассемблер ведет себя как инструменты IBM.