Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Коды команды: TEQ, TST, CMP и CMNСодержание книги Поиск на нашем сайте
Примечание: команды TEQ, TST, CMP и CNM во время выполнения оказывают влияние только на флаги регистра CPSR, и при этом регистр назначения Rd изменению не подвергается. Команда TEQP (разновидность команды TEQ) использовалась в ранних версиях ARM процессоров и поэтому не должна применяться: вместо этой команды должны быть использованы команды по передаче регистров PSR. Выполнение команды TEQP в ядре ARM7TDMI произведет перенос регистра SPSR_<режим> в регистр CPSR, если процессор находится в привилегированном режиме, в противном случае команда TEQP не выполнит никаких действий (непривилегированный режим).
Число машинных тактов выполнения
Число машинных тактов выполнения команд обработки данных зависит от типа самой команды.
Число машинных тактов при выполнении команд обработки данных
S, N и I зависят от типа машинных тактов.
Синтаксис в ассемблере
1. MOV,MVN (команды с одним операндом) <opcode>{cond}{S} Rd,<Op2>2. CMP,CMN,TEQ,TST (команды без записи результата - без Rd) <opcode>{cond} Rn,<Op2> 3. AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC <opcode>>{cond}{S} Rd,Rn,<Op2>где: - <Op2> - это Rm{,<shift>} или {,<#выражение>} - {cond} - двухсимвольная мнемоника условия. - {S} - разрешить условное выполнение (для команд CMP, CMN, TEQ, TST). - Rd, Rn и Rm - выражения, результат вычисления которых - номер регистра общего назначения. - <#выражение> - если это поле используется, то ассемблер попытается сгенерировать команду сдвига 8-битной константы с соответствии с указанным выражением. Если это невозможно, то возникнет ошибка. - <shift> - <тип_сдвига> <регистр> или <тип_сдвига> #выражение, или RRX (расширенный циклический сдвиг вправо). - <shiftname> - ASL, LSL, LSR, ASR, ROR. (так как ASL - синоним LSL, то для обеих команд будет сгенерирован одинаковый машинный код).
Пример
ADDEQ R2,R4,R5 ; Если Z = 1, то R2:=R4+R5 TEQS R4,#3 ; Проверить R4 на равенство 3 ; (ассемблер автоматически установит в единицу бит S) SUB R4,R5,R7,LSR R2; Логический сдвиг вправо R7 на такое число бит, ; которое указано в старшем байте регистра R2, ; затем вычесть результат из R5 и разместить его в R4. MOV PC,R14 ; Возврат из подпрограммы. MOVS PC,R14 ; Возврат из исключения и восстановление CPSR из SPSR_mode.
Неопределенная команда (Undefined).
Если условие истинно, то будет выполнен переход на обработчик прерывания при попытке выполнения неопределенный команды (undefined instruction). Машинный код команды приведен на рисунке.
Неопределенная команда Число машинных тактов
Эта команда выполняется за 2S + 1I + 1N, где S, N и I зависят от типа машинных тактов. Синтаксис в ассемблере
Эта команда не имеет никакой мнемоники в ассемблере. И зарезервирована на будущее, поэтому не должна применяться.
Примеры применения команд в режиме ARM. (Выдать в файле ARM.doc)
В примерах, приведенных ниже, указаны основные способы для достижения высокой эффективности кода с применением основных команд ядра ARM7TDMI. Все эти примеры в основном оптимизированы по размеру кода, а не по скорости выполнения (хотя некоторые из примеров все же позволяют достичь достаточно большой скорости их выполнения).
Использование команд, выполняемых по условиям Применение условий для логического ИЛИ
CMP Rn,#p ; Если Rn=p OR Rm=q то перейти на Label. BEQ Label CMP Rm,#q BEQ Label Эквивалентный код: CMP Rn,#p CMPNE Rm,#q ; Если условие не выполнено, то провести другой тест. BEQ Label
Абсолютное значение
TEQ Rn,#0 ; Проверить знак RSBMI Rn,Rn,#0; и, если необходимо, дополнить до 2-х.
Умножение на 4, 5 или 6 MOV Rc,Ra,LSL#2 ; Умножить на 4,CMP Rb,#5 ; проверить значение,ADDCS Rc,Rc,Ra ; закончить умножение на 5, ADDHI Rc,Rc,Ra ; закончить умножение на 6.
|
||||||||||||||
Последнее изменение этой страницы: 2021-12-07; просмотров: 303; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.1.38 (0.007 с.) |