FISUB обратные команды вычитания
FIMUL и деления (операторы меняются местами)
FIDIV используется суффикс R (reverse)
Аппаратная поддержка BCD чисел реализована только на уровне команд загрузки FBLD и записи в память FBSTP с выталкиванием из стека.
B – BCD, Binary Coded Decimal
В связи с преобразованием BCD числа в формат с плавающей запятой при выполнении команды FBLD или обратного преобразования, при выполнении команды FBSTP, длительное выполнение этих команд, особенно последней, превосходит длительность любой арифметической команды и сопоставима со сложными трансцендентными командами (логарифм, тригонометрические функции).
Справочные данные по длительности выполнения некоторых команд в тактах процессора для семейства P5:
FBLD 48-58
FBSTP 148-154
FDIV 39
IDIV 46
FPTAN 17-173
FSINCOS 17-137
FYL2X 22-111 (y·log2x)
Аппаратная поддержка чисел с плавающей точкой в коротком и длинном формате реализуется на уровне арифметических команд. При этом 32 или 64х разрядные операнды выбираются из памяти.
Регистры данных FPU организованны в своеобразный регистровый стек.
Принципы организации регистрового стека:
1) Адресация регистров данных (R0-R7) осуществляется относительно вершины стека. Адрес текущей вершины стека задается 3х битным полем TOP в слове состояния SW (аналог регистра FPSR) и определяет регистр, обозначенный в программе на Assembler ST(0) или просто ST (Stack Top).
Замечание: Assembler не допускает использования регистров данных с аббревиатурой R0-R7, только ST.
2) При включении в стек, например, по команде загрузки FLD mem, производится предварительный декремент (предекремент) содержимого поля TOP. Стек растет в область младших адресов.
При выполнении обратного действия (пересылка из регистра стека в память FST mem) постинкремента указанного стека, тем не менее, не производится.
Для извлечения операнда из вершины стека после его пересылки в память используется модификация команды FST с добавлением суффикса P – FSTP. По ней после извлечения стека производится смещение в сторону старших адресов.
При выполнении последней команды производится постинкремент поля TOP, т.е. указателя стека. Это является одним из отличий регистрового стека от классического стека реализуемого в памяти.
Другими отличиями являются:
3) Кольцевая организация стека.
Это означает, что декремент указанного стека TOP=000 имеет результатом «111». Инкремент TOP=111 дает значение «000».
4) При выполнении арифметических команд допускается явное или неявное обращение к регистрам стека с модификацией или без модификации его вершин.
Неявное обращение предполагает отсутствие адресной части команды (команда состоит из единственного кода операции), в этом случае операнд команды размещается в вершине стека и туда же помещается результат операции.
Примерами безадресных однооперандных команд могут служить:
FSQRT извлечение квадратного корня из регистра ST(0) → ST(0)
FABS |ST(0)| → ST(0)
FCHS изменение знака, - ST(0) → ST(0)
Явная адресация регистров осуществляется относительно текущей вершины стека, например:
TOP=100
FADD ST, ST(S) складывает содержимое физических регистров
R4+R1 → R4
FADD ST(S), ST R1+R4 → R1
FADD ST(S), ST
После сложения операндов производится инкремент вершины стека TOP.
Безадресная команда FADDP складывает операнды из вершины стека R4 и следующего регистра R5 (ST и ST(1)) и результат помещает в регистр R5 и инкрементирует указатель вершины, удаляет один из операндов стека, смещает указатель стека на результат операции.
К другим примерам безадресных арифметических команд может служить команда FCOMPP, которая выполняет сравнение операндов из верхних регистров стека ST(0) и ST(1) путем их неразрушающего вычитания и установки признаков сравнения (биты C3-C0) в регистре состояний SR.
Завершение команды состоит в двойном инкременте вершины стека, за счет чего оба операнда удаляются из него.
5) Возможность изменения вершины стека (инкремент или декремент) специальными командами FPU:
FINCSTP
FDECSTP
Особенности организации регистрового стека FPU ориентированы на эффективную реализацию вычислительных процедур представленных в польской обратной записи.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.