Предыдущая Следующая

Операция

Ассемблерная мнемоника

Примечание

Преиндексное непосредственное смещение

[Rn, #+/- 8bit_Imm] {!}

 

Преиндексное нулевое смещение

[Rn]

Эквивалентно [Rn, #0]

Преиндексное регистровое смещени?

[Rn, +/-Rm] {!}

 

Постиндексное непосредственное смещение

[Rn], #+/- 8bit_Imm

 

Постиндексное регистровое смещение

[Rn], +/-Rm

 

Режим адресации, обозначенный при описании форматов и ассемблерных мнемоник команд процессора ARM7TDMI-S как <a_mode3>, описан в Табл. 1.10.

Для того чтобы уточнить синтаксис ассемблерных команд ARM7TDMI-S состояния ARM, рекомендуется обратиться к источникам [2, 3], а также к файлам технической документации, которые находятся на прилагаемом к данной книге компакт-диске.

В отношении команд ARM ARM7TDMI-S, перечисленных в Табл. 1.7, необходимо сделать следующие дополнительные пояснения:

1. При записи в регистр CPSR командой MSR в режиме User изменяются только флаги признаков N, Z, V и С, содержащиеся в поле флагов состояния CPSR_f, а остальные биты сохраняют свое прежнее значение. В любом режиме с помощью команды MSR нельзя изменить бит Т регистра CPSR.

2. Ядро ARM7TDMI-S выполняет несколько разновидностей операции умножения. Существуют две основные команды — простое умножение MUL и умножение с накоплением MLA. Каждая из этих команд может иметь короткую форму (результат записывается в один регистр с потерей старших битов) либо длинную форму (результат записывается в два регистра). В ассемблерной мнемонике команды длинная форма имеет суффикс L. С короткой формой команды операции умножения можно производить как со знаковыми, так и с беззнаковыми целыми числами. Длинная форма команды умножения имеет два различных варианта — знаковый и беззнаковый, которые отличаются префиксом S и U соответственно. Таким образом, команда умножения имеет следующие разновидности: MUL, SMULL, UMULL. Аналогично, команда умножения с накоплением имеет разновидности MLA, SMLAL, UMLAL.

3. Команда обратного вычитания RSB позволяет изменить порядок записи операндов в операции вычитания на обратный. Она соответствует последовательности команд «Вычесть из операнда <Oprnd2> содержимое регистра Rn и записать результат в регистр Rd». Команда CMN позволяет сравнить два операнда, у одного из которых перед сравнением изменяется знак.

4. Команды передачи управления служат для изменения хода выполнения программы. Команда перехода В с соответствующим суффиксом условия (Табл. 1.5) обеспечивает выполнение условных или безусловных переходов. Переход к подпрограмме осуществляется командой BL, при этом текущее содержимое программного счетчика PC (адрес возврата) сохраняется в регистре связи LR. В качестве операнда в команде задается смещение label, ко-

торое, с учетом знакового расширения, добавляется к текущему содержимому PC. При вызове вложенных подпрограмм необходимо программно организовать сохранение промежуточных значений адресов возврата (содержимого LR) в стеке, используя регистр SP в качестве указателя. Также программно обеспечивается в случае необходимости сохранение в стеке содержимого рабочих регистров. Указанный в команде адрес перехода должен быть четным, если процессор находится в состоянии THUMB, или кратным четырем, если процессор находится в состоянии ARM.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_25.html on line 190

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_25.html on line 190

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_25.html on line 190