есть две матрицы 8х8 бит - два массива по 8 байт
Код
// здесь какждый байт массива представляет собой столбец матрицы
char Vbuf[1][8] = {... типа данные};
// а этом случае каждый байт массива - это строка
char Hbuf[8][1] = {... типа данные};
в общем данные хранятся примерно так ...
Vbuf[1][8]; Hbuf[8][1];
0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7
1 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7
2 2 2 2 2 2 2 2 0 1 2 3 4 5 6 7
3 3 3 3 3 3 3 3 0 1 2 3 4 5 6 7
4 4 4 4 4 4 4 4 0 1 2 3 4 5 6 7
5 5 5 5 5 5 5 5 0 1 2 3 4 5 6 7
6 6 6 6 6 6 6 6 0 1 2 3 4 5 6 7
7 7 7 7 7 7 7 7 0 1 2 3 4 5 6 7
т.е. первый байт Vbuf представляет собой 0-ые биты каждого байта Hbuf
второй байт Vbuf представляет собой 1-ые биты каждого байта Hbuf и т.д....
char Vbuf[1][8] = {... типа данные};
// а этом случае каждый байт массива - это строка
char Hbuf[8][1] = {... типа данные};
в общем данные хранятся примерно так ...
Vbuf[1][8]; Hbuf[8][1];
0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7
1 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7
2 2 2 2 2 2 2 2 0 1 2 3 4 5 6 7
3 3 3 3 3 3 3 3 0 1 2 3 4 5 6 7
4 4 4 4 4 4 4 4 0 1 2 3 4 5 6 7
5 5 5 5 5 5 5 5 0 1 2 3 4 5 6 7
6 6 6 6 6 6 6 6 0 1 2 3 4 5 6 7
7 7 7 7 7 7 7 7 0 1 2 3 4 5 6 7
т.е. первый байт Vbuf представляет собой 0-ые биты каждого байта Hbuf
второй байт Vbuf представляет собой 1-ые биты каждого байта Hbuf и т.д....
Требуется преобразовать матрицу Vbuf в Hbuf.
Простейшее решение - побитовое копирование.
В это случае контроллер должен будет сделать (8х8)*(команды извлечения бита + команды копирования бита + куча команд для формиро циклов) операций. В итоге получается АЦКАЯ работа.
В моем случае таких матриц к примеру 80 и обработка занимает порядка 50мс.
Хотелось бы услышать дельные советы бывалых программеров о том как оптимизировать алгоритм (мега тактируестя 20МГц и менять ее на что-то более мощное не возможности). Может стоит по другому организовать хранение данных или есть типовые алгоритмы. Буду рад услышать любой совет !!!!