Читать «Архитектура компьютера» онлайн - страница 75

Эндрю Таненбаум

Упорядочение байтов

Байты в слове могут нумероваться слева направо или справа налево. На первый взгляд может показаться, что между этими двумя вариантами нет разницы, но

мы скоро увидим, что выбор имеет большое значение. На рис. 2.9, а изображена область памяти 32-разрядного компьютера, в котором байты пронумерованы слева направо (как у компьютеров SPARC или мэйнфреймов IBM). На рис. 2.9, б показана аналогичная область памяти 32-разрядного компьютера с нумерацией байтов справа налево (как у компьютеров Intel). В первой из этих систем нумерация начинается с высшего порядка, в связи с чем она относится к категории компьютеров с прямым порядком следования байтов (big endian) — в противоположность системам с обратным порядком следования байтов (little endian) (рис. 2.9, а). Между прочим, эти термины («big endian» и «little endian») заимствованы из «Путешествий Гулливера» Свифта — он, как мы помним, иронизировал по поводу спора политиков о том, с какого конца нужно разбивать яйца. Впервые они были введены в научный оборот в виртуозной статье Коэна (1981).

Адрес Обратный порядок следования байтов Прямой порядок следования байтов Адрес
0 0 1 2 3 3 2 1 0 0
4 4 5 6 7 7 6 5 4 4
8 8 9 10 11 11 10 9 8 8
12 12-*—32- 13разряд 14ное слс 15Байты эво— 15-*—32- 14разряд 13ное слс 12Байты эво ► 12
а бРис. 2.9. Память с прямым порядком следования байтов (а); память с обратным порядком следования байтов (б)

Важно понимать, что в обеих системах 32-разрядное целое число (например, 6) представлено битами 110 в трех крайних правых битах слова, а остальные 29 бит представлены нулями. Если байты нумеруются слева направо, биты 110 находятся в байте 3 (или 7, или 11 и т. д.). Если байты нумеруются справа налево, биты 110 находятся в байте 0 (или 4, или 8 и т. д.). В обеих системах слово, содержащее это целое число, имеет адрес 0.

Если компьютеры содержат только целые числа, никаких сложностей не возникает. Однако многие прикладные задачи требуют использования не только целых чисел, но и цепочек символов и других типов данных. Рассмотрим, например, простую запись данных о персонале, состоящую из строки (имя сотрудника) и двух целых чисел (возраст и номер отдела). Строка завершается одним или несколькими нулевыми байтами, призванными заполнить слово целиком. На рис. 2.10, а для записи «Jim Smith, 21 год, отдел 260» (1 X 256 + 4 = 260) представлена схема с нумерацией байтов справа налево, а на рис. 2.10, б — с нумерацией байтов слева направо.