8-900-374-94-44
[email protected]
Slide Image
Меню

Справочник ассемблер команды: Недопустимое название | Ассемблиада вики

Справочник по командам ассемблера AVR

Справочник по системе команд микроконтроллеров AVR основан на переводе документации от Atmel. Помимо этого сюда добавлено больше примеров из практики, в частности, примеры для ассемблера AVR GCC.

Чтобы быстро перейти к нужной команде достаточно ввести её имя. Также можно выбрать команду из списка внизу.

Справочник будет дополняться по мере появления вопросов.

Логические операции
Арифметические операции
Битовые операции
Операции сравнения
Операции сдвига
Операции пересылки данных
Безусловные переходы
Условные переходы
Управление устройством

Команда:

Введите имя команды в поле выше

Логические операции

МнемоникаОписаниеОперацияФлаги
AND Rd, RrЛогическое «И» двух регистровRd ← Rd and RrZ, N, V
ANDI Rd, KЛогическое «И регистра и константыRd ← Rd and KZ, N, V
EOR Rd, RrИсключающее «ИЛИ» двух регистровRd ← Rd xor RrZ, N, V
OR Rd, RrЛогическое «ИЛИ» двух регистровRd ← Rd or RrZ, N, V
ORI Rd, KЛогическое «ИЛИ» регистра и константыRd ← Rd or KZ, N, V
COM RdПеревод в обратный кодRd ← 0xFF — RdZ, C, N, V
NEG RdПеревод в дополнительный кодRd ← 0 — RdZ, C, N, V, H
CLR RdОчистка регистраRd ← Rd xor RdZ, N, V
SER RdУстановка всех разрядов регистраRd ← 0xFF
TST RdПроверка регистра на отрицательное (нулевое) значение Rd ← Rd and RdZ, N, V

Арифметические операции

МнемоникаОписаниеОперацияФлаги
ADD Rd, RrСложение двух регистровRd ← Rd + RrZ, C, N, V, H
ADC Rd, RrСложение двух регистров с переносомRd ← Rd + Rr + СZ, C, N, V, H
SUB Rd, RrВычитание двух регистровRd ← Rd — RrZ, C, N, V, H
SBC Rd, RrВычитание двух регистров с заёмомRd ← Rd — Rr — СZ, C, N, V, H
ADIW Rd, KСложение регистровой пары с константойR(d+1):Rd ← R(d+1):Rd + KZ, C, N, V, S
SBIW Rd, KВычитание константы из регистровой парыR(d+1):Rdl ← R(d+1):Rd — KZ, C, N, V, S
SUBI Rd, KВычитание константы из регистраRd ← Rd — KZ, C, N, V, H
SBCI Rd, KВычитание константы из регистра с заёмомRd ← Rd — K — СZ, C, N, V, H
INC RdИнкремент регистраRd ← Rd + 1Z, N, V
DEC RdДекремент регистраRd ← Rd – 1Z, N, V
MUL Rd, RrУмножение чисел без знакаR1:R0 ← Rd * RrZ, C
MULS Rd, RrУмножение чисел со знакомR1:R0 ← Rd * RrZ, C
MULSU Rd, RrУмножение числа со знаком с числом без знакаR1:R0 ← Rd * RrZ, C
FMUL Rd, RrУмножение дробных чисел без знакаR1:R0 ← (Rd * Rr) << 1Z, C
FMULS Rd, Rr Умножение дробных чисел со знакомR1:R0 ← (Rd * Rr) << 1Z, C
FMULSU Rd, RrУмножение дробного числа со знаком с числом без знакаR1:R0 ← (Rd * Rr) << 1Z, C

Битовые операции

МнемоникаОписаниеОперацияФлаги
CBR Rd, KОчистка разрядов регистраRd ← Rd and (0FFH – K)Z, N, V
SBR Rd, KУстановка разрядов регистраRd ← Rd or KZ, N, V
CBI P, bСброс разряда I/O-регистраP. b ← 0
SBI P, bУстановка разряда I/O-регистраP.b ← 1
BCLR sСброс флага SREGSREG.s ← 0SREG.s
BSET sУстановка флага SREGSREG.s ← 1SREG.s
BLD Rd, bЗагрузка разряда регистра из флага TRd.b ← T
BST Rr, bЗапись разряда регистра во флаг TT ← Rd.bT
CLCСброс флага переносаC ← 0C
SECУстановка флага переносаC ← 1C
CLNСброс флага отрицательного числаN ← 0N
SENУстановка флага отрицательного числаN ← 1N
CLZСброс флага нуляZ ← 0Z
SEZУстановка флага нуляZ ← 1Z
CLIОбщий запрет прерыванийI ← 0I
SEIОбщее разрешение прерыванийI ← 1I
CLSСброс флага знакаS ← 0S
SESУстановка флага знакаS ← 1S
CLVСброс флага переполнения дополнительного кодаV ← 0V
SEVУстановка флага переполнения дополнительного кодаV ← 1V
CLTСброс пользовательского флага TT ← 0T
SETУстановка пользовательского флага TT ← 1T
CLHСброс флага половинного переносаH ← 0H
SEHУстановка флага половинного переносаH ← 1H

Операции сравнения

Мнемоника
Описание
ОперацияФлаги
CP Rd, RrСравнение двух регистровЕсли (Rd – Rr)Z, N, V, C, H
CPC Rd, RrСравнение регистров с учётом переносаЕсли (Rd – Rr — C)Z, N, V, C, H
CPI Rd, KСравнение регистра с константойЕсли (Rd – K)Z, N, V, C, H
CPSE Rd, RrСравнение регистров и пропуск следующей команды если они равныЕсли (Rd = Rr) PC ← PC + 2 (или 3)

Операции сдвига

МнемоникаОписаниеОперацияФлаги
ASR RdАрифметический сдвиг вправоRd(i) ← Rd(i+1) (n=0. .6), C ← Rd(0)
Z, C, N, V
LSL RdЛогический сдвиг влевоRd(i+1) ← Rd(i), Rd(0) ← 0, C ← Rd(7)Z, C, N, V
LSR RdЛогический сдвиг вправоRd(i) ← Rd(i+1), Rd(7) ← 0, C ← Rd(0)Z, C, N, V
ROL RdСдвиг влево через переносRd(i+1) ← Rd(i), Rd(0) ← C, C ← Rd(7)Z, C, N, V
ROR RdСдвиг вправо через переносRd(i) ← Rd(i+1), Rd(7) ← C, C ← Rd(0)Z, C, N, V
SWAP RdОбмен местами тетрадRd(3..0) ↔ Rd(7..4)

Операции пересылки данных

МнемоникаОписаниеОперацияФлаги
MOV Rd, RrПересылка между регистрамиRd ← Rr
MOVW Rd, RrПересылка между парами регистровR(d +1):Rd ← R(r+1):Rr
LDI Rd, KЗагрузка константы в регистрRd ← K
LD Rd, XКосвенное чтениеRd ← [X]
LD Rd, X+Косвенное чтение с пост-инкрементомRd ← [X], X ← X + 1
LD Rd, -XКосвенное чтение с пред-декрементомX ← X — 1, Rd ← [X]
LD Rd, YКосвенное чтениеRd ← [Y]
LD Rd, Y+Косвенное чтение с пост-инкрементомRd ← [Y], Y ← Y + 1
LD Rd, -YКосвенное чтение с пред-декрементомY ← Y — 1, Rd ← [Y]
LDD Rd, Y+qКосвенное чтение со смещениемRd ← [Y+q]
LD Rd, ZКосвенное чтение Rd ← [Z]
LD Rd, Z+Косвенное чтение с пост-инкрементомRd ← [Z], Z ← Z + 1
LD Rd, -ZКосвенное чтение с пред-декрементомZ ← Z — 1, Rd ← [Z]
LDD Rd, Z+qКосвенное чтение со смещениемRd ← [Z+q]
LDS Rd, AНепосредственное чтение из ОЗУRd ← [A]
ST X, RrКосвенная запись[X] ← Rr
ST X+, RrКосвенная запись с пост-инкрементом[X] ← Rr, X ← X + 1
ST -X, RrКосвенная запись с пред-декрементомX ← X — 1, [X] ← Rr
ST Y, RrКосвенная запись[Y] ← Rr
ST Y+, RrКосвенная запись с пост-инкрементом[Y] ← Rr, Y ← Y + 1
ST -Y, RrКосвенная запись с пред-декрементомY ← Y — 1, [Y] ← Rr
STD Y+q, RrКосвенная запись со смещением[Y+q] ← Rr
ST Z, RrКосвенная запись[Z] ← Rr
ST Z+, RrКосвенная запись с пост-инкрементом[Z] ← Rr, Z ← Z + 1
ST -Z, RrКосвенная запись с пред-декрементомZ ← Z — 1, [Z] ← Rr
STD Z+q, RrКосвенная запись со смещением[Z+q] ← Rr
STS A, RrНепосредственная запись в ОЗУ[A] ← Rr
LPMЗагрузка данных из памяти программыR0 ← {Z}
LPM Rd, ZЗагрузка данных из памяти программы в регистрRd ← {Z}
LPM Rd, Z+Загрузка данных из памяти программы с пост-инкрементом ZRd ← {Z}, Z ← Z + 1
ELPMРасширенная загрузка данных из памяти программыR0 ← {RAMPZ:Z}
ELPM Rd, ZРасширенная загрузка данных из памяти программы в регистрRd ← {RAMPZ:Z}
ELPM Rd, Z+Расширенная загрузка данных из памяти программы с пост-инкрементом ZRd ← {RAMPZ:Z}, Z ← Z + 1
SPMЗапись в программную память{Z} ← R1:R0
IN Rd, PПересылка из I/O-регистра в регистрRd ← P
OUT P, RrПересылка из регистра в I/O-регистрP ← Rr
PUSH RrСохранение регистра в стекеSTACK ← Rr
POP RdИзвлечение регистра из стекаRd ← STACK

Безусловные переходы

МнемоникаОписаниеОперацияФлаги
RJMP AОтносительный безусловный переходPC ← PC + A + 1
JMP AДлинный безусловный переходPC ← A
IJMPНепрямой безусловный переходPC ← Z
EIJMPРасширенный непрямой безусловный переходPC ← Z:EIND
RCALL AОтносительный вызов подпрограммыPC ← PC + A + 1
CALL AДлинный вызов подпрограммыPC ← A
ICALLНепрямой вызов подпрограммыPC ← Z
EICALLРасширенный непрямой вызов подпрограммыPC ← Z:EIND
RETВозврат из подпрограммыPC ← STACK
RETIВозврат из подпрограммы обработки прерыванийPC ← STACKI

Условные переходы

Все команды этой группы выполняют переход (PC ← PC + A + 1) при разных условиях.

МнемоникаОписаниеУсловиеФлаги
BRBC s, AПереход если флаг S сброшенЕсли SREG(S) = 0
BRBS s, AПереход если флаг S установленЕсли SREG(S) = 1
BRCS AПереход по переносуЕсли C = 1
BRCC AПереход если нет переносаЕсли C = 0
BREQ AПереход если равноЕсли Z = 1
BRNE AПереход если не равноЕсли Z = 0
BRSH AПереход если больше или равноЕсли C = 0
BRLO AПереход если меньшеЕсли C = 1
BRMI AПереход если отрицательное значениеЕсли N = 1
BRPL AПереход если положительное значениеЕсли N = 0
BRGE AПереход если больше или равно (со знаком)Если (N и V) = 0
BRLT AПереход если меньше (со знаком)Если (N или V) = 1
BRHS AПереход по половинному переносуЕсли H = 1
BRHC AПереход если нет половинного переносаЕсли H = 0
BRTS AПереход если флаг T установленЕсли T = 1
BRTC AПереход если флаг T сброшенЕсли T = 0
BRVS AПереход по переполнению дополнительного кодаЕсли V = 1
BRVC AПереход если нет переполнения дополнительного кодаЕсли V = 0
BRID AПереход если прерывания запрещеныЕсли I = 0
BRIE AПереход если прерывания разрешеныЕсли I = 1
SBRC Rd, KПропустить следующую команду если бит в регистре очищенЕсли Rd[K] = 0
SBRS Rd, KПропустить следующую команду если бит в регистре установленЕсли Rd[K] = 1
SBIC A, bПропустить следующую команду если бит в регистре ввода/вывода очищенЕсли I/O(A, b) = 0
SBIS A, bПропустить следующую команду если бит в регистре ввода/вывода установленЕсли I/O(A, b) = 1

Управление устройством

МнемоникаОписаниеОперацияФлаги
NOPНет операции
SLEEPПереход в «спящий» режим
WDRСброс сторожевого таймера
BREAKПриостановка программы (используется отладчиком)

FE23 — Справочник x86 — Команды ассемблера и машинные команды

 


Первоначально эта информация была помещена на странице   Пояснения к основным таблицам.   Но затем было решено, что эти длинные общие рассуждения лучше вынести на отдельную страницу. Однако, после такого переноса эти рассуждения еще немножко выросли. Теперь, пожалуй, они годятся только для раздела «Разные заметки» …

Команды ассемблера и машинные команды

Прежде всего нужно не забывать, что команды на языке ассемблера и команды на машинном языке — это две разные вещи. Хотя несомненно, что эти два понятия тесно связаны между собой.

Команда ассемблера это некоторое мнемоническое имя. Для процессоров семейства x86 это имя записывается на английском языке. Например, у команды сложения имя ADD, а у команды вычитания имя SUB.

В таблицах настоящего справочника в колонке Команда показано имя команды на языке ассемблера.

Основой машинной команды является код операции, который является просто некоторым числом. Для процессоров x86 (впрочем, и для других процессоров тоже) принято использовать шестнадцатиричные числа. (Попутно заметим, что для советских ЭЦВМ были приняты восьмеричные числа, с ними было меньше путаницы, поскольку такие числа состоят только из цифр и не содержат букв).

В таблицах настоящего справочника в колонке Код показан код операции машинной команды, а в колонке Формат показан формат машинной команды.

Можно считать, что количество разных машинных команд у данного процессора равно количеству возможных кодов операции. По формату можно узнать, из каких составных частей состоит данная машинная команда. Разные машинные команды могут иметь разный формат. Код операции машинной команды полностью определяет ее формат.


Часто одна ассемблерная команда имеет несколько разных вариантов машинных команд. Причем форматы этих машинных команд могут быть разными для разных вариантов.

Например, ассемблерная команда ADD имеет десять вариантов машинных команд с разными кодами операций. Но разных форматов оказывается меньше, только три. И каждый из этих трех форматов требует свои типы операндов при записи команды на языке ассемблера.

См. страницу   Основные команды арифметики.  

Здесь важно обратить внимание, что все эти десять машинных команд выполняют одну и ту же элементарную операцию, которая на языке ассемблера называется ADD.

И, значит, получается, что вроде бы можно рассуждать так: процессор может выполнять столько разных элементарных операций, сколько есть разных команд ассемблера. Однако, этот простой принцип все равно нуждается в оговорках и примечаниях. Так как у части ассемблерных команд бывают еще и синонимы.


Общий список всех команд процессора можно построить разными способами, выбирая разный порядок расположения команд. Основные два способа такие.

Способ (1). Взять за основу команды языка ассемблера и расположить команды по алфавиту. Тогда могут получиться вот такие таблицы.

 
Все команды по алфавиту (кратко)
Все команды по алфавиту (подробно)

Способ (2). Взять за основу код операции машинной команды и расположить команды в порядке кодов операций. При этом будет лучше, если общий список разделить на две части, сделать отдельные списки для команд с однобайтным кодом операции и для команд с двухбайтным кодом операции.

 
Первый байт кода операций
Второй байт кода операций

Конечно, возможен еще и третий способ, который обычно применяется в учебниках. Разделить все команды на группы по смыслу и изучать их по группам, начиная с более простых.

Основной байт кода операции

В системе команд x86 одного байта (256 разных комбинаций) оказалось недостаточно для кодирования всех команд. Поэтому код операции в машинной команде занимает либо один байт, либо два байта.

Если первый байт содержит код 0F, то код операции состоит из двух байтов.

Если в машинной команде код операции состоит из одного байта, то этот единственный байт и является основным байтом кода операции. И содержимое этого байта определяет, что это за операция.

Если в машинной команде код операции состоит из двух байт, то уже не первый, а второй байт будет основным и определяющим в коде операции.

В таблицах справочника, в которых показано кодирование машинных команд, основной байт кода операции обычно бывает показан дважды, сначала в колонке «Код» в виде шестнадцатиричного числа, а затем в колонке «Формат» в виде условных восьми черточек, на которых отмечены особые биты, если таковые есть в основном байте кода операции.




Основные страницы справочника

Справочник по командам процессоров x86 — главная страница
      (здесь карта всех страниц справочника)
 
Структура машинной команды
Байты MRM и SIB — формы адресации
 
Все команды по алфавиту (кратко)
Все команды по алфавиту (подробно)
Первый байт кода операций
Второй байт кода операций
 

ДОБАВИТЬ — Добавить

ДОБАВИТЬ — Добавлять ринггитов ринггитов ринггитов ринггитов ринггитов
Код операции Инструкция Оп/Ан 64-битный режим Режим совместимости/этапа Описание
04 ib ДОБАВИТЬ AL, imm8 я Действительный Действительный Добавить imm8 в AL.
05 ДОБАВИТЬ ТОПОР, imm16 я Действительно Действительный Добавить imm16 в AX.
05 идентификатор ДОБАВИТЬ EAX, imm32 я Действительный Действительный Добавить imm32 в EAX.
REX.W + 05 идентификатор ДОБАВИТЬ РАКС, imm32 я Действительный Н.В. Добавить знак imm32, расширенный до 64 бит, в RAX.
80 /0 иб ДОБАВИТЬ р/м8, имм8 МИ Действительный Действительный Добавьте imm8 к об/м8.
РЕКС + 80/0 ib ДОБАВЬТЕ р/м8 * , имм8 МИ Действительный Н. В. Добавить знак -расширенный imm8 до об/м8.
81/0 ДОБАВИТЬ р/м16, имм16 МИ Действительный Действительный Добавьте imm16 к об/м16.
81/0 идентификатор ДОБАВИТЬ об/м32, имм32 МИ Действительный Действительный Добавьте imm32 к об/м32 .
REX.W + 81/0 id ДОБАВИТЬ р/м64, имм32 МИ Действительный Н.В. Добавить imm32 расширенный знак до 64 бит до r/m64 .
83/0 иб ДОБАВИТЬ р/м16, имм8 МИ Действительный Действительный Добавить знак -расширенный imm8 до об/м16.
83/0 иб ДОБАВИТЬ об/м32, имм8 МИ Действительный Действительно Добавить знак -расширенный imm8 до об/м32.
REX.W + 83/0 ib ДОБАВИТЬ р/м64, имм8 МИ Действительный Н.В. Добавить знак -расширенный imm8 до об/м64.
00 / р ДОБАВИТЬ р/м8, р8 МР Действительный Действительный Добавить r8 до об/м8.
REX + 00 / р ДОБАВИТЬ р/м8 * , р8 * МР Действительный Н.В. Добавьте r8 к об/м8.
01 / р ДОБАВИТЬ р/м16, р16 МР Действительный Действительный Добавьте r16 к об/м16.
01 / р ДОБАВИТЬ р/м32, р32 МР Действительный Действительный Добавьте r32 к об/м32.
REX.W + 01 / р ДОБАВИТЬ р/м64, р64 МР Действительный Н.В. Добавьте r64 к об/м64.
02 / р ДОБАВИТЬ r8, r/m8 Действительный Действительный Добавить об/м8 к об/м8.
REX + 02 / р ДОБАВЬТЕ р8 * , р/м8 * Действительный Н.В. Добавить об/м8 к об/м8.
03 / р ДОБАВИТЬ r16, r/m16 Действительно Действительный Добавить об/м16 к об/м16.
03 / р ДОБАВИТЬ r32, об/м32 Действительный Действительный Добавить об/м32 к об/м32.
REX.W + 03 / р ДОБАВИТЬ r64, r/m64 Действительный Н.В. Добавить об/м64 к об/м64.

*В 64-битном режиме r/m8 нельзя закодировать для доступа к следующим байтовым регистрам, если используется префикс REX: AH, BH, CH, DH.

Кодирование операнда инструкции ¶

Оп/Р Операнд 1 Операнд 2 Операнд 3 Операнд 4
RM ModRM:reg (r, w) ModRM:р/м (р) нет данных Нет данных
МР ModRM:r/m (r, w) ModRM:reg (r) нет данных NA
MI ModRM:r/m (r, w) имм8/16/32 нет данных Н/Д
I АЛ/АКС/ЕАКС/РАКС имм8/16/32 нет данных Нет данных

Описание ¶

Складывает операнд назначения (первый операнд) и операнд-источник (второй операнд), а затем сохраняет результат в операнде назначения. Операнд назначения может быть регистром или ячейкой памяти; исходный операнд может быть непосредственным, регистром или ячейкой памяти. (Однако в одной инструкции нельзя использовать два операнда памяти.) Когда непосредственное значение используется в качестве операнда, оно расширяется по знаку до длины формата целевого операнда.

Инструкция ADD выполняет сложение целых чисел. Он оценивает результат для целочисленных операндов со знаком и без знака и устанавливает флаги OF и CF для указания переноса (переполнения) в результате со знаком или без знака соответственно. Флаг SF указывает знак подписанного результата.

Эту инструкцию можно использовать с префиксом LOCK, чтобы позволить выполнение инструкции атомарно.

В 64-битном режиме размер операции инструкции по умолчанию составляет 32 бита. Использование префикса REX в форме REX.R разрешает доступ к дополнительным регистрам (R8-R15). Использование префикса REX в виде REX.W повышает скорость работы до 64 бит. См. сводную таблицу в начале этого раздела для кодирования данных и ограничений.

Операция ¶

 НАЗНАЧЕНИЕ := НАЗНАЧЕНИЕ + ИСТОЧНИК;
 

Затронутые флаги ¶

В зависимости от результата устанавливаются флаги OF, SF, ZF, AF, CF и PF.

Исключения защищенного режима ¶

#GP(0) Если место назначения находится в недоступном для записи сегменте.
Если эффективный адрес операнда памяти выходит за пределы сегмента CS, DS, ES, FS или GS.
Если регистр DS, ES, FS или GS используется для доступа к памяти и содержит селектор сегмента NULL.
#СС(0) Если эффективный адрес операнда памяти выходит за пределы сегмента SS.
#PF(код неисправности) Если происходит ошибка страницы.
#AC(0) Если включена проверка выравнивания и делается невыровненная ссылка на память, когда текущий уровень привилегий равен 3.
#UD ​​ Если используется префикс LOCK, но назначение не является операндом памяти.

Исключения режима реального адреса ¶

#GP Если эффективный адрес операнда памяти выходит за пределы сегмента CS, DS, ES, FS или GS.
#SS Если эффективный адрес операнда памяти выходит за пределы сегмента SS.
#УД Если используется префикс LOCK, но назначение не является операндом памяти.

Исключения режима Virtual-8086 ¶

#GP(0) Если эффективный адрес операнда памяти выходит за пределы сегмента CS, DS, ES, FS или GS.
#SS(0) Если эффективный адрес операнда памяти выходит за пределы сегмента SS.
#PF(код неисправности) Если происходит ошибка страницы.
#AC(0) Если включена проверка выравнивания и делается невыровненная ссылка на память.
#УД Если используется префикс LOCK, но назначение не является операндом памяти.

Исключения режима совместимости ¶

Те же исключения, что и в защищенном режиме.

Исключения 64-битного режима ¶

#СС(0) Если адрес памяти, ссылающийся на сегмент SS, имеет неканоническую форму.
#GP(0) Если адрес памяти имеет неканоническую форму.
#PF(код неисправности) Если происходит ошибка страницы.
#AC(0) Если включена проверка выравнивания и выполняется невыровненная ссылка на память, а текущий уровень привилегий равен 3.
#UD ​​ Если используется префикс LOCK, но назначение не является операндом памяти.

Справочник по командной строке ARM Assembler | Microsoft Узнайте

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 3 минуты на чтение

Ассемблер Microsoft ARM, armasm и armasm64 , поддерживает несколько параметров командной строки. По умолчанию armasm ассемблирует язык ассемблера ARMv7 Thumb в реализацию Microsoft общего формата объектных файлов (COFF). Ассемблер armasm64 создает объектный код COFF для целей ARM64 и ARM64EC. Компоновщик может связывать объекты кода COFF, созданные как ассемблером ARM, так и компилятором C/C++. Он может быть связан либо вместе с объектными библиотеками, созданными библиотекарем.

Синтаксис

Armasm [ опции ] исходный_файл объектный_файл
armasm [ опции ] исходный_файл

ARMASM64 [ Варианты ] Source_file Object_file
ARMASM64 [ ] 202020505050505050505050505050502020202. 10202020202020202020202.

020202020202

Параметры

Опции
Комбинация из нуля или более следующих опций:

  • -16
    Доступно только в составе Armasm . Собрать исходный код в виде 16-битных инструкций Thumb. Этот параметр используется по умолчанию.

  • -32
    Доступно только в составе Armasm . Соберите исходный код в виде 32-битных инструкций ARM.

  • -coff_thumb2_only
    Доступно только в armasm . Разрешить только код Thumb-2.

  • -errorReport: параметр
    Этот параметр устарел. В Windows Vista и более поздних версиях отчеты об ошибках управляются параметрами отчетов об ошибках Windows (WER).

  • -errors имя файла
    -e имя файла
    Перенаправлять сообщения об ошибках и предупреждения на имя файла . По умолчанию эти сообщения отправляются на stdout .

  • -funcOverride: имя_функции
    Доступно только в armasm64 . Выдать функцию переопределения поддержки для имя_функции .

  • -g
    Создание отладочной информации.

  • -gh:SHA1
    Используйте алгоритм криптографического хеширования SHA-1 для создания контрольной суммы каждого исходного файла в отладочной информации. Переопределяет -gh:SHA256 .

  • -gh:SHA256
    Используйте алгоритм криптографического хэширования SHA-256 для создания контрольной суммы каждого исходного файла в отладочной информации. Этот параметр включен по умолчанию в Visual Studio 2022 версии 17.0 и более поздних.

  • -guard:ehcont [ - ]
    Создайте отсортированный список относительных виртуальных адресов (RVA) всех действительных целей продолжения обработки исключений для двоичного файла. Он используется во время выполнения для NtContinue и SetThreadContext Проверка указателя инструкции. По умолчанию -guard:ehcont выключен и должен быть включен явно. Чтобы явно отключить эту опцию, используйте -guard:ehcont- . Этот параметр доступен в Visual Studio 2019 версии 16.7 и более поздних. Эта функция поддерживается для 64-битных процессов в 64-битной ОС.

  • -help
    -h
    Вывести справочное сообщение командной строки.

  • -i каталог [ ; каталог ]
    Добавить один или несколько указанных каталогов в путь поиска включения. Разделяйте каталоги точкой с запятой ( ; ).

  • -игнорировать warning_number
    Отключить указанный номер предупреждения. Возможные значения см. в разделе диагностические сообщения ARM Assembler.

  • -список list_file
    Создать подробный листинг сгенерированного языка ассемблера в list_file . Параметр list_file является необязательным. Если он опущен, ассемблер добавляет .lst к базовому имени source_file для создания файла листинга.

  • -машина машина
    Укажите тип машины для установки в заголовке PE. В armasm возможные значения для машина являются:

    • ARM — устанавливает тип машины на IMAGE_FILE_MACHINE_ARMNT . Этот параметр используется по умолчанию.
    • THUMB — Устанавливает тип машины на IMAGE_FILE_MACHINE_THUMB .

    В armasm64 возможные значения:

    • ARM64 — устанавливает тип машины IMAGE_FILE_MACHINE_ARM64 . Этот параметр используется по умолчанию.
    • ARM64EC — устанавливает тип машины на IMAGE_FILE_MACHINE_ARM64EC .
  • -noesc
    -noe
    Игнорировать экранированные специальные символы в стиле C, такие как \n или \t .

  • -nologo
    Подавить баннер авторских прав.

  • -nowarn
    -now
    Отключить все предупреждающие сообщения.

  • -o объектный_файл
    Укажите имя объектного (выходного) файла. Параметр -o является необязательным; вместо этого вы можете указать имя объектного файла в качестве последнего элемента командной строки.

  • -oldit
    Доступно только в Armasm . Создавайте ИТ-блоки в стиле ARMv7. По умолчанию генерируются IT-блоки, совместимые с ARMv8.

  • - предопределить директива
    -pd директива
    Укажите директиву SETA, SETL или SETS для предварительного определения символа.
    Пример: armasm.exe -predefine "COUNT SETA 150" source.asm
    Дополнительные сведения см. в Справочном руководстве по компилятору ARM.

  • -sourcelink: sourcelink_filename
    sourcelink_filename указывает файл конфигурации в формате JSON, который содержит простое сопоставление путей локальных файлов с URL-адресами исходных файлов для отображения в отладчике. Дополнительные сведения о формате этого файла см. в разделе Схема исходной ссылки JSON. Source Link — это система, не зависящая от языка и системы управления исходным кодом, которая обеспечивает отладку исходного кода для двоичных файлов. Source Link поддерживается для собственных двоичных файлов, начиная с Visual Studio 2017 версии 15.8. Общие сведения об исходной ссылке см. в разделе Исходная ссылка. Сведения о том, как использовать Source Link в ваших проектах и ​​как создать файл SourceLink как часть вашего проекта, см. в разделе Использование Source Link.

  • -via имя файла
    Чтение дополнительных аргументов командной строки из имя файла .

исходный_файл
Имя исходного файла.

object_file
Последний элемент командной строки может указывать имя объектного (выходного) файла. Если он опущен и не указана опция -o , ассемблер добавляет .obj к базовому имени 9.0019 source_file
для создания объектного файла.

В следующем примере показано, как использовать armasm в типичном сценарии. Во-первых, используйте armasm для создания исходного файла на языке ассемблера (.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *