Главная arrow Программирование arrow ARM arrow Как выровнять (align) размер памяти на 4 байта? Sunday, October 22 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Как выровнять (align) размер памяти на 4 байта? Версия для печати
Написал microsin   
01.03.2009

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

Например, микроконтроллер оперирует 32-битными словами (4 байта), и может работать только с такой порцией данных (у меня так получилось с портом SSC на AT91SAM7X256 - передающий регистр SSC_THR имеет разрядность 32 бита, и порт SSC передает зараз 4 байта). Таким образом, для организации буфера передачи необходимо выделить такое количество байт, чтобы это количество нацело делилось на 4. Делается это очень просто, но неочевидным образом. Пусть length - минимальное невыровненное количество байт, которое требуется для данных. Тогда выравнивание на 4 достигается добавлением нужного количества байт по следующему алгоритму:
    length +=  3;       // добавляем 3 к length
    length &= ~3;       // сбрасываем 3 младших бита length

Последнее обновление ( 01.03.2009 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017