209
микропрограммно. При переходе AS/400 на 64-разрядный RISC-процессор
PowerPC (1995 г.) этот слой стал чисто программным.
Интерфейс микроядра – в AS/400 он называется MI (machine
interface – машинный интерфейс) – обеспечивает функционально полную
систему команд, в символьном виде представляемую высокоуровневым
языком ассемблера. Таким образом, MI предоставляет лежащему выше
программному обеспечению интерфейс некоторой виртуальной машины.
И приложения, и сама ОС OS/400 разрабатываются на уровне MI (или
выше), не имея доступа к интерфейсам, лежащим ниже MI, в том числе и
к командам реального процессора. Переносимость программного
обеспечения – приложений и ОС – обеспечивается на уровне MI-кодов.
MI-код не является непосредственно исполняемым, он должен быть
переведен в команды реального процессора. Однако, процесс трансляции
расположен ниже уровня MI, он совершенно прозрачен для приложений и
для ОС. Среди команд MI имеются как команды, близкие к обычным
машинным командам, оперирующие байтами, словами, числами и т.п., так
и команды, оперирующие с интегрированными структурами данных –
объектами, обрабатываемыми микроядром. Впрочем, "обычные" команды
MI также можно назвать объектно-ориентированными: команды содержат
не собственно данные, а ссылки на объекты, содержащие наряду с самими
данными и описания их типа, размера и т. п. Так, например, системы
команд реальных процессоров обычно содержат несколько команд
сложения – разных для разных размеров и форм представления чисел; в
MI имеется единственная команда сложения – ADDN, которая в
зависимости от типов операндов транслируется в ту или иную команду
(или последовательность команд) реального процессора.
SLIC обеспечивает аппаратную независимость верхних уровней
программного обеспечения – приложений и OS/400. При упомянутом
переходе на платформу PowerPC переделке подвергся только SLIC,