Программная архитектура Alpha
Alpha является полностью 64-битной RISC архитектурой. Все регистры имеют длину 64 бита, и все операции производятся между 64-битными регистрами.
Это не 32-битная архитектура, которая была расширена до 64 бит (как, например, x86-64).
Характеристики программной архитектуры Alpha
· Все инструкции имеют длину 32 бита и четко заданный формат.
· Существуют 32 целочисленных 64-битных регистра (R0-R31). Регистр R31 всегда равен нулю, и запись в него не производится.
· Все операции над целыми значениями происходят в целочисленных регистрах. Параметры операций: до двух регистров – источники данных, один регистр – приемник.
· Существуют 32 вещественных 64-битных регистра (F0-F31). Регистр F31 всегда равен нулю, и запись в него не производится.
· Все операции над вещественными значениями происходят в вещественных регистрах. Параметры операций: до двух регистров – источники данных, один регистр – приемник.
· Инструкции могут перемещать данные из вещественных регистров в целочисленные и обратно. При этом инструкции не рассматривают содержимое отдельных битов и не обращаются в память.
· Для работы с памятью существуют только инструкции чтения значения из памяти в регистр и записи из регистра в память.
· Команды условных переходов проверяют значения целочисленных или вещественных регистров, которые могут являться результатом предшествующего сравнения.
Поддерживаются следующие типы данных
Целочисленные
Байт – Byte
Слово – Word
Двойное (длинное) слово – Double (long) Word
Учетверенное слово – Quad Word
Вещественные
F_Floating – 32 бита (VAX),
G_Floating – 64 бита (VAX),
D_Floating – 64 бита (VAX),
S_Floating – 32 бита (IEEE),
T_Floating – 64 бита (IEEE),
X_Floating – 128 бит (IEEE) – только программная поддержка.
Использование регистров в Alpha Linux
Имя регистра |
Программное имя регистра |
Описание |
r0 |
v0 |
Используется для вычисления выражений и хранения целочисленного результата функции. |
r1…r8 |
t0…t7 |
Временные регистры, их значения не сохраняются при вызове подпрограмм. |
r9…r14 |
s0…s5 |
Сохраняемые регистры, их значения должны сохраняться при вызове подпрограмм. |
r15 |
FP или s6 |
Указатель кадра или сохраняемый регистр. |
r16…r21 |
a0…a5 |
Аргументные регистры, используются для передачи первых шести целочисленных аргументов подпрограмм, их значения не сохраняются при вызове подпрограмм. |
r22…r25 |
t8…t11 |
Врéменные регистры, их значения не сохраняются при вызове подпрограмм. |
r26 |
ra |
Содержит адрес возврата; используется для вычисления выражений. |
r27 |
pv или t12 |
Значение процедуры или временный регистр. |
r28 |
at |
Временный регистр ассемблера, значение не сохраняется при вызове подпрограмм. |
r29 |
GP |
Глобальный указатель. |
r30 |
SP |
Указатель стека. |
r31 |
zero |
Всегда имеет значение 0. |
Команды архитектуры Alpha
Типы команд процессора Alpha:
· Команды PALcode (Privileged Architecture Library) – набор подпрограмм, характерных для реализации конкретной операционной системы.
· Команды ветвлений. Команды условного перехода могут проверять значение регистра на больше/меньше, ноль/не ноль или четное/нечетное. Команды безусловного перехода могут записать адрес возврата в регистр.
· Команды чтения и записи – перемещают 8, 16, 32, 64-битные выровненные значения из памяти и в память. Адреса в памяти 64-битные виртуальные без сегментации.
· Команды целочисленных операций.
Большинство целочисленных операций работает с 64-битными значениями. Это обычный набор команд, состоящий из арифметических и логических операций, операций сравнения и побитового сдвига. Есть также три 32-битные операции: сложение, вычитание и умножение. Операция целочисленного деления отсутствует.
Архитектура Alpha также поддерживает следующие дополнительные операции:
· масштабируемое сложение/вычитание (для быстрого вычисления индекса),
· 128-битное умножение (для выполнения деления и использования высокоточной арифметики),
· условное присваивание (для избежания ветвлений),
· большой набор инструкций для манипуляций байтами и словами в регистрах,
· набор мультимедиа инструкций (для обработки графики и видео).
· Команды вещественных операций включают четыре полных набора арифметических операций для обработки вещественных значений в форматах VAX и IEEE, а также инструкции для преобразования вещественных чисел в целые и наоборот.
Группы команд
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.