ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5289
Скачиваний: 8
Типы и форматы операндов 79
мещают в нескольких ячейках с последовательными адресами, при этом для дос-
тупа к числу указывается только наименьший из адресов. При разработке архи-
тектуры системы команд необходимо определить порядок размещения байтов в па-
мяти, то есть какому из байтов (старшему или младшему) будет соответствовать
этот наименьший адрес
1
. На рис. 2.28 показаны оба варианта размещения 32-раз-
рядного числа в четырех последовательных ячейках памяти, начиная с адреса
х.
Рис. 2.28.
Размещение в памяти 32-разрядного числа: а — начиная со старшего байта;
б
— начиная с младшего байта
В вычислительном плане оба способа записи равноценны. Так, фирмы DEC
и Intel отдают предпочтения размещению в первой ячейке младшего байта, a IBM
и Motorola ориентируются на противоположный вариант. Выбор обычно связан
с некими иными соображениями разработчиков ВМ. В настоящее время в боль-
шинстве машин предусматривается использование обоих вариантов, причем вы-
бор может быть произведен программным путем за счет соответствующей уста-
новки регистра конфигурации.
В англоязычной литературе систему записи числа, начиная со старшего байта, обозначают термином
«big
а с младшего байта — термином
Оба названия происходят от названия
племен
и «остроконечники»), упоминаемых в книге Джонатана Свифта «Путеше-
ствия Гулливера». Там описывается религиозная война между этими племенами, по причине разно-
гласий в вопросе, с какого конца следует разбивать яйцо — тупого или острого.
Помимо порядка размещения байтов, существенным бывает и выбор адреса,
с которого может начинаться запись числа. Связано это с физической реализаци-
ей полупроводниковых запоминающих устройств, где обычно предусматривается
возможность считывания (записи) четырех байтов подряд. Причем данная опера-
ция выполняется быстрее, если адрес первого байта
A
отвечает условию
A
mod 5 = 0
(S = 2,
4, 8, 16). Числа, размещенные в памяти в соответствии с этим
называются
выравненными
(рис. 2.29).
На рис. 2.30 показаны варианты размещения 32-разрядного слова без выравни-
вания. Их использование может приводить к снижению производительности.
Адрес
О
4
8
12
16
20
Рис. 2.30.
Размещение 32-разрядного слова без соблюдения правила выравнивания
Большинство компиляторов генерируют код, в котором предусмотрено вырав-
нивание чисел в
Символьная информация
В общем объеме вычислительных действий все большая доля приходится на об-
работку символьной информации, содержащей буквы, цифры, знаки
математические и другие символы. Каждому символу ставится в соответствие оп-
ределенная двоичная комбинация. Совокупность возможных символов и назна-
ченных им двоичных кодов образует
таблицу кодировки.
В настоящее время при-
меняется множество различных таблиц кодировки. Объединяет их весовой
принцип, при котором веса кодов цифр возрастают по мере увеличения
а веса символов увеличиваются в алфавитном
Так вес буквы «Б» на
ницу больше веса буквы «А». Это способствует упрощению обработки в ВМ.
До недавнего времени наиболее распространенными были кодовые
в которых символы кодируются с помощью восьмиразрядных двоичных комбина-
ций (байтов), позволяющих представить 256 различных символов:
• расширенный двоично-кодированный код EBCDIC (Extended Binary
Decimal Interchange Code);
• американский стандартный код для обмена информацией ASCII
Standard Code for Information Interchange).
Код EBCDIC используется в качестве внутреннего кода в универсальных
фирмы IBM. Он же известен под названием ДКОИ (двоичный код для обработки
информации).
Стандартный код
восьмая позиция отводится для записи
бита четности. Это обеспечивает представление 128 символов, включая
Типы и форматы операндов
81
латинские буквы, цифры, знаки основных математических операций и знаки пун-
ктуации. Позже появилась европейская модификация ASCII, называемая Latin 1
(стандарт ISO 8859-1). В ней «полезно» используются все 8 разрядов. Дополни-
тельные комбинации (коды
в новом варианте отводятся для представле-
ния специфических букв алфавитов западно-европейских языков, символов псев-
дографики, некоторых букв греческого алфавита, а также ряда математических
и финансовых символов. Именно эта кодовая таблица считается мировым стан-
дартом де-факто, который применяется с различными модификациями во всех стра-
нах. В зависимости от использования кодов 128-255 различают несколько вари-
антов стандарта ISO 8859 (табл. 2.7).
Таблица 2.7.
Варианты стандарта ISO 8859
Стандарт
ISO 8859-1
ISO 8859-2
ISO 8859-3
ISO 8859-4
ISO 8859-5
ISO 8859-6
ISO 8859-7
ISO 8859-8
ISO 8859-9
ISO 8859-10
ISO 8859-11
ISO 8859-13
ISO
8859-14
ISO 8859-15
ISO 8859-16
Характеристика
Западно-европейские языки
Языки стран центральной и восточной Европы
Языки стран южной Европы, мальтийский и эсперанто
Языки стран северной Европы
Языки славянских стран с символами кириллицы
Арабский язык
Современный греческий язык
Языки иврит и
Турецкий язык
Языки стран северной Европы (лапландский, исландский)
Тайский язык
Языки балтийских стран
Кельтский язык
Комбинированная таблица для европейских языков
Содержит специфические символы ряда языков: албанского,
хорватского, английского, финского, французского, немецкого,
венгерского, ирландского, итальянского, польского, румынского
и словенского
В популярной в свое время операционной системе MS-DOS стандарт ISO 8859
реализован в форме
кодовых страниц
OEM (Original Equipment Manufacturer).
Каждая OEM-страница имеет свой идентификатор (табл. 2.8).
Таблица 2.8.
Наиболее распространенные кодовые страницы OEM
82 Глава 2. Архитектура системы команд
Таблица 2.8
(продолжение)
Идентификатор
СР737
СР775
СР852
СР853
СР855
СР860
СР862
СР865
СР866
СР932
СР936
Страны
кодовой страницы
Греция
Латвия, Литва, Эстония
Страны восточной Европы
Турция
Страны с кириллической письменностью
Португалия
Израиль
Дания, Норвегия
Китай
Хотя код ASGII достаточно удобен, он все же слишком тесен и не вмещает мно-
жества необходимых символов. По этой причине в 1993 году консорциумом ком-
паний Apple Computer, Microsoft, Hewlett-Packard, DEC и IBM был разработан
16-битовый, стандарт ISO 10646, определяющий универсальный набор символов
Universal Character Set). Новый код, известный под названием Unicode,
позволяет задать до 65 536 символов, то есть дает возможность одновременно пред-
ставить символы всех основных «живых» и «мертвых» языков. Для букв русского
языка выделены коды 1040-1093.
В «естественном» варианте кодировки Unicode, известном как UCS-2, каждый
символ описывается двумя последовательными байтами
тип,
так что номеру сим-
вола соответствует численное значение
+ п.
Таким образом, кодовый но-
мер представлен
двоичным числом. Наряду с UCS-2 в рамках Unicode
существуют еще несколько вариантов кодировки Unicode (UTF, Unicode Transfor-
mation Formats), основные из которых UTF-8 и UTF-7.
В кодировке UTF-8 коды символов меньшие, чем 128, представляются одним
байтом. Все остальные коды формируются по более сложным правилам. В зависи-
мости от символа его код может занимать от двух до
байтов, причем стар-
ший бит каждого байта всегда имеет единичное значение. Иными словами, значе-
ние байта лежит в диапазоне от 128 до 255. Ноль в старшем бите байта означает,
что код занимает один байт и совпадает по кодировке с ASCII. Схема формирова-
кодов UTF-8 показана в табл. 2.9.
Таблица 2.9.
Структура кодов UTF-8
Число
байтов
1
2
представление
110ххххх 10хххххх
Число
свободных битов
7
11(5
+ 6)
Типы и форматы операндов
83
Число
байтов
3
4
5
6
представление
110хххх10хххххх 10хххххх
11110ххх 10хххххх 10хххххх 10хххххх
10хххххх 10хххххх 10хххххх 10хххххх
10хххххх 10хххххх 10хххххх 10хххххх 10хххххх
Число
свободных битов
16(4 + 6 x 2 )
2 1 ( 3 + 6 x 3 )
2 6 ( 2 + 6 x 4 )
3 1 ( 1 + 6 x 5 )
В UTF-7 код символа также может занимать один или более байтов, однако
в каждом из байтов значение не превышает
(старший бит байта содержит ноль).
Многие символы кодируются одним байтом, и их кодировка совпадает с ASCII,
однако некоторые коды зарезервированы для использования в качестве преамбу-
лы, характеризующей последующие байты многобайтового кода.
Стандарт Unicode обратно совместим с кодировкой ASCII, однако если в ASCII
для представления схожих по виду символов (минус, тире, знак переноса) приме-
нялся общий код, в Unicode каждый
этих символов имеет уникальную кодировку.
Впервые Unicode был использован в операционной системе Windows NT. Распре-
деление кодов в Unicode иллюстрирует табл. 2.10.
Таблица
Блоки символов в стандарте Unicode
Коды
0-8191
8192-12287
12288-16383
16384-59391
59392-65024
65025-65536
Алфавиты — английский, европейские, фонетический, кириллица,
армянский, иврит, арабский, эфиопский, бенгали, деванагари, гур,
гуджарати, ория, телугу, тамильский, каннада, малайский,
сингальский, грузинский, тибетский, тайский, лаосский,
кхмерский, монгольский
Знаки пунктуации, математические операторы, технические
символы, орнаменты и т. п.
Фонетические символы китайского, корейского и японского
Китайские, корейские, японские идеографы. Единый набор
символов каллиграфии хань
Блок для частного использования
Блок обеспечения совместимости с программным обеспечением
Параллельно с развитием Unicode исследовательская группа ISO проводит ра-
боты над 32-битовой кодовой таблицей, однако ввиду широкой распространенно-
сти кодировки Unicode дальнейшие перспективы новой разработки представля-
ются неопределенными.
Логические данные
Элементом логических данных является логическая (булева) переменная, кото-
рая может принимать лишь два значения: «истина» или «ложь». Кодирование ло-
гического значения принято осуществлять битом информации: единицей кодируют