Assembler - язык неограниченных возможностей


Регистры FPU


FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.

Регистры данных (R0 – R7) не адресуются по именам, как регистры основного процессора. Вместо этого эти восемь регистров рассматриваются как стек, вершина которого называется ST, а более глубокие элементы — ST(1), ST(2) и так далее до ST(7). Если, например, в какой-то момент времени регистр R5 называется ST (рис. 13), то после записи в этот стек числа оно будет записано в регистр R4, который станет называться ST, R5 станет называться ST(1) и т.д.


Рис. 13. Регистры FPU


Рис. 13. Регистры FPU




К регистрам R0 – R7 нельзя обращаться напрямую, по именам, но если процессор поддерживает расширение ММХ, то мантиссы, находящиеся в этих регистрах, становятся доступны, как ММ0 – ММ7.

Регистр состояний SR содержит слово состояния FPU:

    Бит 15: В — занятость FPU — этот флаг существует для совместимости с 8087, и его значение всегда совпадает с ES.

    Бит 14: С3 — условный флаг 3.

    Биты 13 – 11: ТОР — число от 0 до 7, показывающее, какой из регистров данных R0 – R7 в настоящий момент является вершиной стека.

    Бит 10: С2 — условный флаг 2.

    Бит 9: С1 — условный флаг 1.

    Бит 8: С0 — условный флаг 0.

    Бит 7: ES — общий флаг ошибки — равен 1, если произошло хотя бы одно немаскированное исключение.

    Бит 6: SF — ошибка стека. Если С1 = 1, произошло переполнение (команда пыталась писать в непустую позицию в стеке), если С1 = 0, произошло антипереполнение (команда пыталась считать число из пустой позиции в стеке).

    Бит 5: РЕ — флаг неточного результата — результат не может быть представлен точно.

    Бит 4: UE — флаг антипереполнения — результат слишком маленький.




    Начало  Назад  Вперед