Skip to content

Математический сопроцессор. Регистры

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-разрядные.

Clone this wiki locally