Язык программирования Оберон-2

C: Модуль SYSTEM



Приложение C: Модуль SYSTEM

Модуль SYSTEM содержит некоторые типы и процедуры, которые необходимы для реализации операций низкого уровня, специфичных для данного компьютера и/или реализации. Они включают, например, средства для доступа к устройствам, которые управляются компьютером, и средства, позволяющие обойти правила совместимости типов, наложенные определением языка. Настоятельно рекомендуется ограничить использование этих средств специфическими модулями (модулями низкого уровня). Такие модули непременно являются непереносимыми, но легко распознаются по идентификатору SYSTEM, появляющемуся в их списке импорта. Следующие спецификации действительны для реализации Оберон-2 на компьютере Ceres.
     Модуль SYSTEM экспортирует тип BYTE со следующими характеристиками: переменным типа BYTE можно присваивать значения переменных типа CHAR или SHORTINT. Если формальный параметр-переменная имеет тип ARRAY OF BYTE, то соответствующий фактический параметр может иметь любой тип.
Другой тип, экспортируемый модулем SYSTEM, - тип PTR. Переменным типа PTR могут быть присвоены значения переменных-указателей любого типа. Если формальный параметр-переменная имеет тип PTR, фактический параметр может быть указателем любого типа.
Процедуры, содержащиеся в модуле SYSTEM, перечислены в таблицах. Большинство их соответствует одиночным командам и компилируются непосредственно в машинный код. О деталях читатель может справиться в описании процессора. В таблице v обозначает переменную, x, y, a, и n - выражения, а T - тип.

Процедуры-функции



Название Типы аргументов Тип результата Функция
ADR(v) любой LONGINT адрес переменной v
BIT(a,n) a: LONGINT; n:целый BOOLEAN n-й бит Память[a]
CC(n) целая константа BOOLEAN условие n (0 <= n <= 15)
LSH(x,n) x: целый, CHAR, BYTE; n: целый совпадает с типом x логический сдвиг
ROT(x,n) x: целый, CHAR, BYTE; n: целый   совпадает с типом x   циклический сдвиг
VAL(T,x) T, x: любого типа T x интерпретируется как значение типа T
<
Собственно процедуры

Название Типы аргументов Функция
GET(a, v) a: LONGINT; v: любой основной тип, указатель, процедурный тип v := Память[a]
PUT(a, x) a: LONGINT; x: любой основной тип, указатель, процедурный тип Память[a] := x
GETREG(n, v) n: целая константа; v: любой основной тип, указатель, процедурный тип v := Регистр n
PUTREG(n, x) n: целая константа; x: любой основной тип, указатель, процедурный тип Регистр n := x
MOVE(a0,a1,n)  a0, a1: LONGINT; n: целый Память[a1..a1+n-1] := Память[a0..a0+n-1]
NEW(v, n) v: любой указатель; n: целый размещает блок памяти размером n байт; присваивает его адрес переменной v

Содержание раздела