[an error occurred while processing this directive]
|
Пример: указатель на 32-битный int равен 0x10000. Значение переменной - равный 0x12345678. Что хранится в однобайтовой ячейке памяти по адресу 0x10001? На x86 машинах там хранится 0x56. Потому что в таком порядке int сохраняется из 32-битного регистра в память одной командой. В другом порядке сохранять долго - нужно сохранять по одному байтику. Точно так же int будет представлен и на ARM машине, работающей в little-endian режиме. А если ARM запущен в big-endian режиме, то в этой ячейке будет храниться 0x34. Так же, как и на некоторых других не-интелловских big-endian процессорах. То, что интела little-endian - это просто стечение обстоятельств. От конкретной реализации компилятора это как раз мало зависит: большинство процессоров, в отличие от оригинального ARM, не могут переключать порядок байт. Т. е. если процессор имеет преимущественный порядок байт - компилятору его игнорировать достаточно тяжело.
E-mail: info@telesys.ru