- •1 Общие сведения
- •1.1 Типы данных
- •1.2 Регистры общего назначения
- •1.3 Регистр состояния программы
- •1.4 Набор инструкций ARM
- •2 Флаги условий
- •3 Предикаты выполнения команды
- •4 Команды обработки данных
- •4.1 Условные обозначения
- •4.2 Форматы записи универсального операнда
- •4.3 Форматы записи команд обработки данных
- •4.4 Арифметические операции
- •4.5 Логические операции
- •4.6 Операции простой пересылки
- •4.7 Операции сравнения и проверки
- •4.8 Сдвиговые операции при формировании второго операнда
- •4.8.1 Арифметический сдвиг вправо
- •4.8.2 Логические сдвиги
- •4.8.3 Циклический сдвиг вправо
- •4.8.4 Циклический сдвиг вправо на одну позицию с переносом
- •4.9 Примеры
- •5 Команды передачи управления
- •5.1 Условные обозначения
- •5.2 Форматы записи команд передачи управления
- •5.3 Переход на метку
- •5.4 Переход по адресу в регистре
- •5.5 Вызов подпрограммы
- •5.6 Вызов подпрограммы по адресу в регистре
- •5.7 Вызов подпрограммы со сменой набора инструкций
- •6 Команды доступа к памяти (пересылки данных)
- •6.1 Условные обозначения
- •6.2 Форматы записи выражения, формирующего адрес, и виды адресации
- •6.3 Режимы пересылки
- •6.4 Особенности использования различных команд пересылки
- •6.5 Примеры использования команд пересылки
- •7 Команды умножения
- •7.1 Условные обозначения
- •7.2 Простое умножение
- •7.3 «Длинное» умножение
- •8 Псевдоинструкции
- •8.1 Псевдоинструкция ldr
teq |
test for equivalence |
Проверка на |
Обновить флаги условий по результату |
|
|
равенство |
выполнения побитового "Искл. ИЛИ" |
|
|
|
между первым и вторым операндом. |
|
|
|
Аналог инструкции eors. |
4.8Сдвиговые операции при формировании второго операнда
Одним из способов формирования универсального операнда (он же «второй операнд») является выполнение сдвиговой операции над некоторым регистром (см. выражение (4)). Результат сдвиговой операции формирует значение универсального операнда, однако при этом содержимое регистра, над которым производится сдвиг не меняется. Возможные виды сдвиговых операций приведены в таблице 5.
Логические команды и команды простой пересылки записывают в флаг С значение последнего бита, сдвинутого за пределы разрядной сетки, но только если указан суффикс S (установка флагов условий). Команды tst и teq всегда обновляют флаг С аналогичным образом.
Таблица 5: Сдвиговые операции при формировании универсального операнда
Операция |
Расшифровка |
Назначение |
|
|
|
asr |
Arithmetic shift right |
Арифметический сдвиг вправо |
lsl |
Logical shift left |
Логический сдвиг влево |
|
|
|
lsr |
Logical shift right |
Логический сдвиг вправо |
|
|
|
ror |
Rotate right |
Циклический сдвиг вправо |
|
|
|
rrx |
Rotate right with extend |
Циклический сдвиг вправо на одну позицию с |
|
|
переносом |
4.8.1 Арифметический сдвиг вправо
При правом арифметическом сдвиге заполнение освобождающихся слева позиций происходит значениями старшего разряда числа. Таким образом, при правом сдвиге отрицательного числа освобождающиеся слева позиции заполняются единицами, таким образом, знак числа сохраняется, а значение по модулю уменьшается в 2n раз. Иначе говоря, арифметический сдвиг рассматривает сдвигаемое число как знаковое.
4.8.2 Логические сдвиги
При выполнении логических сдвигов биты с одного края, сдвигающиеся за пределы разрядной сетки, пропадают, а освобождающиеся позиции с другого края заполняются нулями.
14