RISC5
| RISC5 | |
|---|---|
| Разработчик | Никлаус Вирт |
| Разрядность | 32 |
| Тип | RISC |
RISC5 — архитектура набора команд виртуальной машины, разработанная швейцарским компьютерным учёным Никлаусом Виртом в Швейцарской высшей технической школе Цюриха (ETH Zurich). Архитектура была создана специально для поддержки языков программирования семейства Паскаль/Модула/Оберон и операционной системы Оберон.
История создания
[править | править код]RISC5 была разработана в конце 1980-х — начале 1990-х годов в рамках проекта Оберон под руководством Никлауса Вирта в ETH Zurich. Проект был частью исследований по созданию простой, элегантной и эффективной компьютерной системы, которая демонстрировала бы принципы хорошего дизайна как в аппаратном, так и в программном обеспечении[1].
Архитектура создавалась с учётом потребностей языков высокого уровня семейства Паскаль, включая сам Паскаль, Модула-2 и Оберон. Особое внимание уделялось поддержке структурного программирования и модульности — ключевых принципов, продвигаемых Виртом[2].
Архитектура
[править | править код]RISC-5 следует принципам RISC-архитектуры (Reduced Instruction Set Computer), предполагающим использование простого и регулярного набора команд.
Регистры
[править | править код]16 регистров общего назначения (R0-R15)
Регистр R15 используется как указатель стека
Регистр R14 часто используется как регистр связи (link register)
Система команд[3]
[править | править код]Все команды имеют фиксированную длину 32 бита
Простой и ортогональный набор команд
Поддержка основных арифметических и логических операций
[править | править код]| op | Команда | Действие | Комментарий |
|---|---|---|---|
| 1 | MOV a, n | R.a := n | |
| 2 | LSL a, b, n | R.a := R.b ← n | shift left by n bits |
| 3 | ASR a, b, n | R.a := R.b → n | shift right by n bits with sign extension |
| 4 | ROR a, b, n | R.a := R.b rot n | rotate right by n bits |
| 5 | AND a, b, n | R.a := R.b & n | logical operations |
| 6 | ANN a, b, n | R.a := R.b & ~n | |
| 7 | IOR a, b, n | R.a := R.b or n | |
| 8 | XOR a, b, n | R.a := R.b xor n | |
| 9 | ADD a, b, n | R.a := R.b + n | integer arithmetic |
| 10 | SUB a, b, n | R.a := R.b – n | |
| 11 | MUL a, b, n | R.a := R.a х n | |
| 12 | DIV a, b, n | R.a := R.b div n | |
| 13 | FAD a, b, c | R.a := R.b + R.c | floating-point arithmetic |
| 14 | FSB a, b, c | R.a := R.b – R.c | |
| 15 | FML a, b, c | R.a := R.a х R.c | |
| 16 | FDV a, b, c | R.a := R.b / R.c |
при v = 0 extension of im with 16 zero bits
при v = 1 extension of im with 16 one bits
| 4 | 4 | 4 | 4 | 12 | 4 |
|---|---|---|---|---|---|
| 00u0 | a | b | op | c |
| 4 | 4 | 4 | 4 | 16 |
|---|---|---|---|---|
| 01uv | a | b | op | imm |
N := bit 31 of result. Hence, N indicates whether the result is negative.
Z := all bits of result zero. Z indicates whether the result is zero.
C := carry out bit. (For addition and subtraction only).
V := overflow. (For addition and subtraction only)
Команды загрузки и сохранения для работы с памятью
[править | править код]Команды условных и безусловных переходов
[править | править код]Адресация памяти
[править | править код]Простая модель памяти
Поддержка различных режимов адресации
Эффективная работа с массивами и структурами данных
Примечания
[править | править код]- ↑ Wirth, Niklaus. Digital Circuit Design for Computer Science Students. — Springer-Verlag, 1995.
- ↑ Wirth, Niklaus (1988). The Programming Language Oberon. Software: Practice and Experience. 18 (7): 671—690.
- ↑ Niklaus Wirth. The Design of a RISC Architecture and its Implementation with an FPGA (англ.). — 2015. Архивировано 5 апреля 2026 года.