Поиск по сайту: |
|
По базе: |
|
Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд |
|
||||||||||||||||
Умножение (MUL) и Умножение с накоплением (MLA) с 32-битным результатомЭти команды будут выполнены, если условие истинно. Все различные условия их выполнения перечислены в таблице 6. Машинный код обеих команд приведен на рис.21. Обе команды для выполнения целочисленного умножения используют алгоритм, основанный на цепочке операций логического сдвига и сложения 8-битных операндов (Booth's algorithm).
В команде умножения (MUL) используется следующая форма записи: Rd := Rm*Rs. Регистр Rn игнорируется и должен быть равен нулю с целью совместимости с возможным в будущем расширением системы команд. В командах умножения с накоплением (MLA) используется другая форма записи: Rd := Rm*Rs + Rn. При Rm=1 или Rs=1 эта команда по своим действиям эквивалентна выполнению команды ADD. Обе команды позволяют выполнять операции только с целочисленными операндами как без знака так и со знаком (дополнение до 2-х). Результаты умножения 32-битных операндов со знаком и 32-битных операндов без знака различаются только своими старшими 32-мя битами, а младшие 32 бита обоих результатов - одинаковы обоих типов операндов. Поскольку результат выполнения команд MUL и MLA только 32-битный (старшие 32 бита результата будут отброшены), то результат выполнения этих команд будет одинаков как для операндов со знаком, так без знака. Например, команда умножения 0xFFFFFFF6 (операнд A) на 0x00000014 (операнд B) даст результат, равный 0xFFFFFF38. Если операнды интерпретируются как знаковые Пусть, операнд А = -10, а операнд B = 20, то результатом их умножения будет число -200, которое корректно записывается так: 0xFFFFFF38. Если операнды - без знака Пусть, операнд А = 4294967286, а операнд B = 20, то результатом их умножения будет число 85899345720, которое корректно записывается так: 0x13FFFFFF38, но старшие 32 бита результата отбрасываются, то окончательным результатом умножения будет число 0xFFFFFF38. Ограничения операнда Недопустимо использование регистра-результата Rd одновременно в качестве регистра-операнда (Rm, Rn или Rs). Также недопустимо использование регистра R15 в качестве регистра-операнда или регистра-результата. Все другие комбинации остальных регистров будут давать корректный результат, а, если требуется, то в роли Rd, Rn и Rs может выступать один и тот же регистр. Флаги регистра CPSR Возможность воздействия на флаги регистра CPSR определяется битом S в соответствующем поле команды. Флаги N (минус) и Z (ноль) устанавливаются в соответствии с результатом умножения: флаг N становится равным 31-му биту результата, а флаг Z устанавливается только, если результат - ноль. Флаг С (перенос) устанавливается в неизвестное состояние, а флаг V (переполнение) - не используется. Число машинных тактов при выполнении Команда MUL выполняется за 1S + mI машинных тактов, а команда MLA - за 1S + I(m + 1) машинных тактов, где S и I зависят от типа машинных тактов, m - количество 8-битных множителей, необходимых для выполнения умножения, и зависит содержимого операнда-множителя Rs. Возможные значения m перечислены ниже:
Синтаксис в ассемблере MUL{cond}{S} Rd, Rm, Rs MLA{cond}{S} Rd, Rm, Rs, Rn
Примеры
<---- Вернуться к Системе команд ---> Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|