Арифметико-логическое устройство (АЛУ) (англ. arithmetic and logic unit, ALU) — блок процессора, который под управлением устройства управления (УУ) служит для выполнения арифметических и логических преобразований (начиная от элементарных) над данными, представляемыми в виде машинных слов, называемыми в этом случае операндами.
Арифметическо-логическое устройство в зависимости от выполнения функций можно разделить на две части: микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд); операционное устройство (АЛУ), в котором реализуется заданная последовательность микрокоманд (команд).
Функции регистров, входящих в арифметическо-логическое устройство
Рг1 — сумматор (или сумматоры) — главный регистр АЛУ, в котором образуется результат вычислений;
Рг2,Рг3 — регистры операндов (слагаемого/сомножителя/делителя/делимого и др.) в зависимости от выполняемой операции;
Рг4 — регистр адреса (или адресные регистры), предназначенные для запоминания (бывает что формирования) адреса операндов результата;
Рг6 — k индексных регистров, содержимое которых используется для формирования адресов;
Рг7 — l вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.
Все выполняемые в АЛУ операции являются логическими операциями (функциями), которые можно разделить на следующие группы:
операции двоичной арифметики для чисел с фиксированной точкой;
операции двоичной (или шестнадцатеричной) арифметики для чисел с плавающей точкой;
операции десятичной арифметики;
операции индексной арифметики (при модификации адресов команд);
операции специальной арифметики;
операции над логическими кодами (логические операции);
операции над алфавитно-цифровыми полями.
Команды этой группы выполняют АЛУ операции между младшими полусловами регистров. Примечание: все команды этой группы влияют на флаги регистра CPSR.
OP
THUMB ассемблер
ARM эквивалент
Действия
AND Rd, Rs
ANDS Rd, Rd, Rs
Rd:= Rd AND Rs
EOR Rd, Rs
EORS Rd, Rd, Rs
Rd:= Rd EOR Rs
LSL Rd, Rs
MOVS Rd, Rd, LSL Rs
Rd:= Rd << Rs
LSR Rd, Rs
MOVS Rd, Rd, LSR Rs
Rd:= Rd >> Rs
ASR Rd, Rs
MOVS Rd, Rd, ASR Rs
Rd:= Rd ASR Rs
ADC Rd, Rs
ADCS Rd, Rd, Rs
Rd:= Rd + Rs + Carry
SBC Rd, Rs
SBCS Rd, Rd, Rs
Rd:= Rd - Rs - NOT Carry
ROR Rd, Rs
MOVS Rd, Rd, ROR Rs
Rd:= Rd ROR Rs
TST Rd, Rs
TST Rd, Rs
Установить флаги регистра CPSR для Rd AND Rs
NEG Rd, Rs
RSBS Rd, Rs, #0
Rd = -Rs
CMP Rd, Rs
CMP Rd, Rs
Установить флаги регистра CPSR для Rd - Rs
CMN Rd, Rs
CMN Rd, Rs
Установить флаги регистра CPSR для Rd + Rs
ORR Rd, Rs
ORRS Rd, Rd, Rs
Rd:= Rd OR Rs
MUL Rd, Rs
MULS Rd, Rs, Rd
Rd:= Rs * Rd
BIC Rd, Rs
BICS Rd, Rd, Rs
Rd:= Rd AND NOT Rs
MVN Rd, Rs
MVNS Rd, Rs
Rd:= NOT Rs
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 15. Число машинных тактов выполнения этих команд в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM.
Примеры
EOR R3, R4
; R3:= R3 EOR R4 и установить флаги условий.
ROR R1, R0
; Сдвиг R1 вправо на число бит, указанное в R0,
; результат поместить в R1 и установить флаги условий.
NEG R5, R3
; Вычесть содержимое R3 из нуля, разместить результат в регистре R5
; и установить флаги условий. Т.е. R5 = -R3.
CMP R2, R6
; Установить флаги условий в зависимости от результата R2 - R6.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2025) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление