Прямой и обратный порядок байтов



Существует два способа адресации байтов в словах, а именно в прямом и обрат­ном порядке (рис. 4.8). Обратным порядком байтов (big-endian) называется сис­тема адресации, при которой байты адресуются слева направо, так что самый старший байт слова (расположенный с левого края) имеет наименьший адрес. Прямым порядком байтов (little-endian) называется противоположная система адресации, при которой байты адресуются справа налево, так что наименьший ад­рес имеет самый младший байт слова (расположенный с правого края). Слова «старший» и «младший» определяют вес бита, то есть степень двойки, соответст­вующей данному биту, когда слово представляет число. В маши­нах для коммерческих расчетов используются обе системы адресации. В обеих этих системах адреса байтов 0,4, 8 и т. д. применяются в качестве адресов после­довательных слов памяти в операциях чтения и записи слов.

Рис. 4.8. Адресация байтов и слов: обратный порядок байтов (а);

прямой порядок байтов (б)

 

В компьютерах, использующих процессоры Intel, все данные хранятся так, что младший байт находится по младшему адресу, так что слова записываются задом наперед, то есть сначала (по младшему адресу) записывают последний (младший) байт, а потом (по старшему адресу) записывают первый (старший) байт. Если из программы всегда обращаться к слову как к слову, а к двойному слову как к двойному слову, это не оказывает никакого влияния. Но если вы хотите прочитать первый (старший) байт из слова в памяти, придется увеличить адрес на 1. Двойные и учетверенные слова записываются так же — от младшего байта к старшему.

Наряду с порядком байтов в слове важно также определить порядок битов в байте. Типичный способ расположения битов показан на рис. 4.7, а. Это наибо­лее естественный порядок битов для кодирования числовых данных, непосредст­венно соответствующий их разрядам. Этот же порядок использован на рисунке при обозначении битов: b7,b6, …,b0 (слева направо). Однако существуют компью­теры, для которых характерен обратный порядок битов.

Расположение слов в памяти

В случае 32-разрядных слов их естественные границы располагаются по адресам 0, 4, 8 и т. д. (рис. 4.8). При этом мы говорим, что слова выровнены по адресам в па­мяти. Если говорить, в общем, слова считаются выровненными в памяти в том случае, если адрес начала каждого слова кратен количеству байтов в нем. По практическим причинам, связанным с манипулированием двоично-кодирован­ными адресами, количество байтов в слове обычно является степенью двойки. Поэтому, если длина слова равна 16 (2 байтам), выровненные слова начинаются по байтовым адресам 0, 2, 4,..., а если она равна 64 (23 байтам), то выровненные слова начинаются по байтовым адресам 0, 8, 16, ... .

Не существует причины, по которой слова не могли бы начинаться с произ­вольных адресов. Такие слова называются невыровненными. Как правило, слова выравниваются по адресам памяти, но в некоторых компьютерах это не так.

Доступ к числам, символам и символьным строкам

Обычно число занимает целое слово. Поэтому, для того чтобы обратиться к нему в памяти, нужно указать адрес слова, по которому оно, это число, хранится. Точно так же доступ к отдельно хранящемуся в памяти символу осуществляется по ад­ресу его байта.

Во многих приложениях необходимо обрабатывать строки символов перемен­ной длины. Для доступа к такой строке нужно указать адрес байта, в котором хра­нится ее первый символ. Последовательные символы строки содержатся в после­довательных байтах. Существует два способа определения длины строки. Первый из них заключается в использовании специального управляющего символа, обо­значающего конец строки и являющегося ее последним символом. Второй способ состоит в использовании отдельного слова памяти или регистра процессора, со­держащего число, которое определяет длину строки в байтах.


Дата добавления: 2018-02-18; просмотров: 1662; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!