Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как на AVR храниться uint16_t

badyIoUiy Ученик (104), открыт 1 неделю назад
на настройках компилятора от arduinoIDE. big endian или little endian?
1 ответ
@Synergyst Мыслитель (8281) 1 неделю назад
В AVR младший байт (младший разряд) хранится по младшему адресу в памяти, а старший байт (старший разряд) – по старшему адресу, то-бишь little endian.
badyIoUiyУченик (104) 1 неделю назад
спосибо. я думал это зависит от настроек компилятора, проц то 8 бит. не думал что там есть инструкции для оперирования числами больших размерностей
@Synergyst Мыслитель (8281) badyIoUiy, порядок байтов little endian является фундаментальной особенностью архитектуры AVR и не зависит от настроек компилятора вообе. Он заложен в аппаратную реализацию процессора и набор его инструкций. Несмотря на то, что AVR - 8-битный процессор, он способен работать с числами больших размерностей (16 бит, 32 бита и т.д.) с помощью специальных инструкций, и они выполняют операции над частями числа по отдельности, учитывая порядок байтов. Можно рассмотреть в качестве примера сложение двух 16-битных чисел A и B, хранящихся в регистрах R2:R3 и R4:R5 соответственно (R2 и R4 содержат младшие байты). Результат будет помещен в регистры R0:R1:
 ADD R3, R5    ; сложение старших байтов
ADC R2, R4    ; сложение младших байтов  
Похожие вопросы