Ответ: сделать 8 одномерных массивов по 256 элементов.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Сергей Борщ 06 января 2004 г. 22:51
В ответ на: flash char Table[2][2]={ {0,1} , {2,3} }; char temp = Table[1][1]; Как сделать быстрее отправлено _vladimir 06 января 2004 г. 18:41

или сделать массив [8][256] и через указатель. Для доступа к Table[i][j] будет примерно так:


union
{
unsigned char *pTable;
struct
{
unsigned char column;
unsigned char row;
}
}ptr;
ptr.pTable = &Table[0][0];
ptr.column += j;
ptr.row += i;
Value = *ptr.pTable;

кажется так. Впрочем, после переделки массива в [8][256] компилятор сам к нему оптимально обращается.
Если массив переделывать не хочется, то можно так:
unsigned char *pTable;
pTable = &Table[0][0];
pTable += (i<<3);
pTable += j;
Value = *pTable;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru