-
Notifications
You must be signed in to change notification settings - Fork 0
Математический сопроцессор. Регистры
Ivan Bogatyrev edited this page Jun 12, 2023
·
2 revisions
Предусмотрено 8 80-разрядных регистров данных (ST0-ST7). При этом, к ним напрямую адресовать нельзя. Адресация происходит с помощью стека, который реализован внутри этого сопроцессора.
Стек закольцован и имеет 8 элементов.
Для выполнения операций, в качестве одного из операндов берется регистр, на который указывает вершина стека. Вершина стека автоматически каждый раз увеличивается. Когда указатель вершины доходит до 8‑го регистра (самого высокого), автоматически происходит сброс в ноль.
-
R0..R7
, адресуются не по именам, а рассматриваются в качестве стекаST
.ST
соответствует регистру - текущей вершине стека,ST(1)..ST(7)
- прочие регистры -
SR
- регистр состояний. Содержит слово состояния FPU. Сигнализирует о различных ошибках, переполнениях. Отдельные биты описывают и состояния регистров и в целом сигнализируют об ошибках (переполнениях и тп) при последней операции. -
CR
- регистр управления. Через него можно настраивать правила округления чисел и контроль точности. Можно с помощью специальных битов указывать, как будет производиться округление - в большую или меньшую сторону, по математическим правилам или нет. Гибкие настройки для чисел с плавающей точкой. -
TW
- 8 пар битов, описывающих состояния регистров: число (00), ноль (01), не-число (10), пусто (11) (изначально все пустые, проинициализированы единичками) -
FIP
,FDP
- адрес последней выполненной команды и её операнда для обработки исключений. Разрядность зависит от разрядности машины, т.к. адреса могут иметь разную длину.
SR
, CR
, TW
- 16-разрядные.