Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение невыровненного слова (ARM7,Keil)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
imiron13
Пытаюсь прочитать невыровненое слово(4 байта) из массива char cmd_data[]:
int val = *((int*)(&cmd_data[6]))

Компилятор (Keil4) генерирует одну инструкцию:
LDR R8,[R4,#0x0006], где R4-указатель на массив, #0x0006-индекс,
после выполнения которой в R8 заносится содержимое ячеек:
(от старшей к младшей) 5,4,7,6 (ожидалось - 9,8,7,6), что,
наверное, правильно и вызвано спецификой ядра.

Но даже если так, то разве компилятор не должен предусматривать
все эти вещи и генерить несколько инструкций, и, пусть и со
снижением производительности, но читать правильно?

Поделитесь опытом, как поступают в таких случаях.
aaarrr
Код
int val = *((__packed int*)(&cmd_data[6]))
imiron13
Цитата(aaarrr @ Apr 2 2010, 01:33) *
Код
int val = *((__packed int*)(&cmd_data[6]))

Спасибо. Буду знать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.