7.5.2.2. Типы данных

Основными типами данных являются байты, слова и двойные слова (смотри Рис. 6). Байт образуют восемь соседних битов, которые нумеруются с 0 до 7, причем бит 0 является самым младшим значащим битом.

Слово состоит из двух байтов, имеющих последовательные адреса. Т.о. слово содержит 16 бит, которые нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит - старшим байтом. В процессоре i486 младший байт хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине слова.

Рис. 5. Сегментная адресация

Двойное слово состоит из четырех байт, имеющих последовательные адреса. Т.о. двойное слово содержит 32 бита, которые нумеруются от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31-й бит - старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адрес старшего слова может быть использован для доступа к старшей половине двойного слова.

Для достижения максимальной гибкости в структурах данных и эффективного использования памяти, слова необязательно выравнивать по четным адресам. Двойные слова также необязательно выравнивать по адресам, кратным четырем. Однако, из-за того, что процессор i486 имеет 32-разрядную шину, обмен данными между процессором и памятью производится двойными словами, начинающимися с адресов, кратных четырем. Процессор преобразует запросы не выровненных слов или двойных слов в последовательность запросов, допустимых для интерфейса с памятью. Таким образом, отсутствие выравнивания данных снижает производительность из-за увеличения количества обращений к памяти. Для повышения производительности структуры данных (особенно стеки) следует выравнивать по четным адресам и по адресам, кратным четырем.

Рис. 6. Основные типы данных

Рис. 7. Байты, слова и двойные слова в памяти

Т.к. байты, слова и двойные слова являются основными типами операндов, процессор также поддерживает дополнительную интерпретацию этих операндов. Специализированные команды распознают следующие типы данных (смотри Рис. 8):

·  Целый тип: знаковое двоичное значение, содержащееся в 32-разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Все операции предполагают представление чисел в дополнительном коде. Знаковый бит расположен в бите 7 в байте, в бите 15 в слове и в бите 31 в двойном слове. Он равен 0 для положительных чисел и 1 для отрицательных. 8-разрядное целое число может изменяться в диапазоне от -128 до +127, 16-разрядное целое число в диапазоне от -32768 до +32767, а 32 -разрядное целое число в диапазоне от -231 до +231-1.

·  Обычный тип: беззнаковое двоичное значение, содержащееся в 32- разрядном двойном слове, 16-разрядном слове или 8-разрядном байте. Значение числа для байта может изменяться от 0 до 255, для слова от 0 до 65535 и для двойного слова от 0 до 232-1.

·  Ближний указатель: 32-разрядный логический адрес, который представляет собой относительный адрес внутри сегмента. Ближние указатели используются для всех указателей в сплошной модели и для ссылок внутри сегмента в сегментированной модели памяти.

·  Дальний указатель: 48-разрядный логический адрес из двух компонентов: 16-разрядного селектора сегмента и 32-разрядного относительного адреса. Дальние указатели используются программами только в том случае, когда конструкторы системы выбирают сегментированную модель памяти.

·  Строка: непрерывная последовательность байтов, слов или двойных слов. Строка может содержать от 0 до 232-1 байтов или 4 Гбайт.

·  Битовое поле: непрерывная последовательность битов, в которой каждый бит рассматривается как независимая переменная. Битовое поле может начинаться с любого бита любого байта и может быть длиной до 32 бит.

·  Битовая строка: непрерывная последовательность битов. Битовая строка может начинаться с любого бита любого байта и иметь длину до (232-1) бит.

·  Неупакованный двоично-десятичный тип (НДД): распакованное байтовое представление десятичной цифры от 0 до 9. Распакованные десятичные числа хранятся как беззнаковые байтовые значения по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом. Старший полубайт должен быть равным нулю при делении и умножении, но может иметь любое значение при вычитании или сложении.

·  Упакованный двоично-десятичный тип (УДД): упакованное байтовое представление двух десятичных цифр от 0 до 9. Каждая цифра хранится в своем полубайте. Цифра в старшем полубайте является более значимой. Диапазон упакованного десятичного байта составляет от 0 до 99.

·  Вещественные типы (типы данных с плавающей точкой).

Рис. 8. Типы данных

 

 

 

HotLog

.  

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий