2. Форматы памяти
Процессор ARM7TDMI рассматривает память, как линейную совокупность байт, пронумерованных в возрастающем порядке, начиная с 0. Например,
- байты 0..3 представляют первое записанное слово;
- байты 4...7 представляют второе записанное слово.
Процессор ARM7TDMI поддерживает оба порядка следования байт многобайтных слов в памяти:
- Прямой порядок байт (Little-endian), когда сначала следует младший, а затем старший байты.
- Обратный порядок байт (Big-Endian), когда сначала следует старший, а затем младший байты.
Прим.: по умолчанию у ARM-процессоров используется прямой порядок байт (Little-endian).
Формат следования байт ЦПУ указывает, где в слове размещается старший значащий байт или разряд. Поскольку при запуске ЦПУ значения вычисляются, начиная с младших значащих разрядов, то прямой порядок устанавливается автоматически.
Конфигурация порядка следования байт не зависит от типа хранимых данных (слова, полуслова или байты).
2.1 Прямой порядок (Little-endian)
В формате прямого порядка, байт с наименьшим адресом в слове рассматривается как младший значащий байт слова, а байт с наибольшим адресом - старший значащий байт. Т.о., байт по адресу 0 системы памяти соединяет с линиями данных 7...0. На рисунке 2.1 показывается, как слово по адресу А, полуслова по адресам А и А+2, а также байты по адресам А, А+1, А+2, А+3 соотносятся между собой при конфигурации ядра к прямому порядку.
Рисунок 2.1. Адреса байт и полуслов в слове при прямом порядке (Little-endian)
2.2. Обратный порядок (Big-Endian)
В формате обратного порядка, процессор ARM7TDMI запоминает старший значащий байт слова в позиции байта с наименьшим порядковым номером, а младший байт - в позиции байта с наибольшим порядковым номером. Т.о., байт по адресу 0 системы памяти связан с линиями данных 31..24.
На рисунке 2.2 показывается, как слово по адресу А, полуслова по адресам А и А+2, а также байты по адресам А, А+1, А+2, А+3 соотносятся между собой при конфигурации ядра к обратному порядку.
Рисунок 2.2. Адреса байт и полуслов в слове при обратном порядке (Big-endian)
|