Форматы данных
Сопроцессор расширяет номенклатуру форматов данных, с которыми работает основной процессор. Сопроцессор специально разрабатывался для вычислений с плавающей точкой. Но сопроцессор может работать и с целыми числами, хотя и менее эффективно. Форматы данных, с которыми работает сопроцессор: – двоичные целые числа в трех форматах — 16, 32 и 64 бита; – упакованные целые десятичные (BCD) числа — максимальная длина 18 упакованных десятичных цифр (9 байт); – вещественные числа в трех форматах — коротком (32 бита), длинном (64 бита), и расширенном (80 бит). Кроме этих основных форматов, сопроцессор поддерживает специальные численные значения, к которым относятся: – денормализовавные вещественные числа — это числа меньшие минимального нормализованного числа для каждого вещественного формата, поддерживаемого сопроцессором; – нуль; – положительные и отрицательные значения бесконечность; – нечисла; – неопределенности и неподдерживаемые форматы. В самом сопроцессоре числа в этих форматах имеют одинаковое внутреннее представление — в виде расширенного формата вещественного числа. Это один из форматов представления вещественных чисел, который точно соответствует формату регистров r0…r7 стека сопроцессора. Таким образом, даже если вы используете команды сопроцессора с целочисленными операндами, то после загрузки в сопроцессор операндов целого типа они автоматически преобразуются и формат расширенного вещественного числа. Двоичные целые числа Сопроцессор работает с тремя типами целых чисел: Целое слово, 16 бит, -32 768...+32 767 Короткое целое, 32 бита -2х10*9...+2х10*9 Длинное целое 64 бита, -9х10*18...+9х10*18 Выбирая формат данных, с которыми будет работать ваша программа, помните, что сопроцессор поддерживает операции с целыми числами, но работа с ними осуществляется неэффективно. Причина в том, что обработка сопроцессором целочисленных данных будет замедлена из-за необходимости выполнения дополнительного преобразования целых чисел с их внутреннее представление в виде эквивалентного вещественного числа расширенного формата.
В программе целые двоичные числа описываются обычным способом — с использованием директив dw, dd и dq. Например, целое число 5 может быть описано следующим образом: ch_dw 5 представление в памяти: ch_dw=05 00 ch_dd 5 представление в памяти: ch_dw=05 00 00 00 chfdq 5 представление в памяти: ch_dw=05 00 00 00 00 00 00 00 Работать с целыми числами может далеко не всякая команда сопроцессора. Подробную информацию о командах сопроцессора можно найти в Справочнике.
|