Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"
Порядок следования байтов в многобайтовых данных
Download 0.63 Mb. Pdf ko'rish
|
978-5-321-02171-21 2012 (1)
Порядок следования байтов в многобайтовых данных. К сожале-
нию, не существует единого стандарта на порядок следования (разме- щения в памяти по возрастанию адресов) байтов. Исторически сло- жилось несколько альтернативных подходов к размещению байтов в памяти. 1. Интеловский порядок (Intel order или little-endian) – это запись многобайтных данных «младшими байтами вперед». При этом млад- ший байт записывают по самому младшему адресу, остальные байты записывают подряд по возрастанию адресов в порядке возрастания старшинства байтов. Этот порядок записи принят в операционной системе Windows, в персональных компьютерах с x86-процессорами. Возьмем для примера 32-битное целое значение в шестнадцатерич- ном коде 57415244H. Это число будет размещено в памяти по возрас- танию адресов таким образом: áÄÒÅÓ +0 +1 +2 +3 ä×ÏÉÞÎÙÊ 01000100 01010010 01000001 01010111 HEX 44H 52H 41H 57H Существенным достоинством little-endian по сравнению с другими по- рядками записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байтов (при условии, что читаемое число помещается в диапазон). Так, если в памяти содержится число 00000022H, то прочитав его как двухбайтовое целое, мы получим чис- ло 0022H, прочитав один байт – число 22H. 2. Мотороловский порядок (Motorola order или big-endian) – это за- пись многобайтных данных «старшими байтами вперед». При этом старший байт записывают по самому младшему адресу, остальные байты записывают подряд по возрастанию адресов в порядке убыва- ния старшинства байтов. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому порядок байтов от старшего к младшему часто назы- вают сетевым порядком байтов (network byte order). Этот порядок бай- тов используется операционной системой UNIX, процессорами IBM 360/370/390, Motorola 68000, SPARC. Возьмем для примера 32-битовое целое значение в шестнадцате- ричном коде 57415244H. Это число будет размещено в памяти по воз- растанию адресов таким образом: áÄÒÅÓ +0 +1 +2 +3 ä×ÏÉÞÎÙÊ 01010111 01000001 01010010 01000100 HEX 57H 41H 52H 44H 93 4. Стандартные библиотеки Keil µVision 3. Смешанный порядок (middle-endian) иногда используется при ра- боте с числами, длина которых превышает машинное слово. Произво- дится факторизация числа не на байты, а на машинные слова, которые записываются в формате, естественном для данной архитектуры, но сами слова записываются в обратном порядке. Классический пример middle-endian – представление четырехбай- товых целых чисел на 16-битовых процессорах семейства PDP-11 (спо- соб известен как «PDP-endian»). Для представления двухбайтовых зна- чений использовался порядок big-endian, но четырехбайтовое двойное слово записывалось от младшего слова к старшему. В процессорах VAX и ARM используется также смешанное представление для длинных вещественных чисел. Возьмем для примера 32-битовое целое значение в шестнадцате- ричном коде 57415244H. Для PDP-endian это число будет размещено в памяти по возрастанию адресов таким образом: áÄÒÅÓ +0 +1 +2 +3 ä×ÏÉÞÎÙÊ 01000001 01010111 01000100 01010010 HEX 41H 57H 44H 52H Термины big-endian и little-endian первоначально не имели никакого отношения к информатике. В сатирическом произведении Джонатана Свифта «Путешествия Гулливера» описываются вымышленные госу- дарства Лилипутия и Блефуску, в течение многих лет ведущие между собой войны из-за разногласия по поводу того, с какого конца следует разбивать варёные яйца. Тех, кто считал, что яйца нужно разбивать с тупого конца, в произведении называли «Big-endians» («тупоконечни- ки»). Споры между сторонниками big-endian и little-endian в информа- тике также часто носят характер «религиозных войн». Download 0.63 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling