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

Формат F0
4 4 4 4 12 4
00u0 a b op c
Формат F1
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)

Адресация памяти

Простая модель памяти

Поддержка различных режимов адресации

Эффективная работа с массивами и структурами данных

Примечания

  1. ↑ Wirth, Niklaus. Digital Circuit Design for Computer Science Students. — Springer-Verlag, 1995.
  2. ↑ Wirth, Niklaus (1988). The Programming Language Oberon. Software: Practice and Experience. 18 (7): 671—690.
  3. ↑ Niklaus Wirth. The Design of a RISC Architecture and its Implementation with an FPGA (англ.). — 2015. Архивировано 5 апреля 2026 года.