По теме и не совсем: изучаю Си самостоятельно, для написания программ и, в конечном итоге, портирования linux на spmp8000 (китайские клоны psp. До меня это уже сделали, но результат я так и не видел, и, к сожалению, вряд ли увижу. История долгая, разработчик сделал все, но забросил проект, разобраться надо). Программист (я) в самом зачаточном состоянии: простой сортировщик для рендеринга шрифта с созданием тестового массива :
#include <stdio.h>
int createarray (int *array, int data, int propperties)
{
unsigned int i;
for (i = 0; i < data; i+=propperties){
*(array+i) = i+propperties;
};
return 0;
}
void prt_arr(int *array, int lenth, char *arrayname)
{
unsigned int count;
for (count = 0; count < lenth; count++){
printf ("%s=%d ", arrayname, *(array+count));
};
}
void copydata (int *data, int *resdata, int lenth)
{
int i;
for (i = 0; i < lenth; i++){
*(resdata+i) = *(data+i);
//printf ("b=%d ", prt);
};
}
int main (void) {
//входные данные,
int id = 8, x = 2, y = 3 , n = 4 , prop = 1; //symbol id's, weight symbol, heght, n-symbols count per string, proper - byte per pixel
//производные. все производные следует умножать на коэф prop.
int string_count = id/n;
x = x*prop;//or y=y*prop
//determine constant
int id_data = x*y;
int shift_to_y = x*n;
int string_data = x*n*y;
int alldata = id*id_data;
//determine shift and position inside arrays
// int pos_out0 = 0;//start position
int a[alldata], b[alldata];
////////////////////////////////////////////////////////////////////////////////////
int pos_in = 0, pos_out = 0;//current positoin inside "in" array and "out"
int shift_in, shift_out;//shift to next data
int i,arr_id, stringshift;//just counts
printf ("array created %s\n", ( (createarray (&a[0], alldata, prop))?"with error":"without errors"));
prt_arr(&a[0], alldata, "a");
printf ("\nid=%d, x=%d, y=%d, n=%d, alldata=%d, strings:%d\n", id,x,y,n,alldata, string_count);
//////////// programm for sorting /////////////////////////////////////////////////////////////
for (arr_id = 0; arr_id < id; arr_id++){
stringshift = (arr_id/n)*string_data;
shift_in = stringshift+x*(arr_id%n);
shift_out = id_data*arr_id;
for (i = 0; i < y; i++){
pos_in = shift_in+i*shift_to_y;
pos_out = i*x + shift_out;
copydata (&a[pos_in],&b[pos_out],x);
//printf (" in=%d, out=%d ", pos_in, pos_out);
};
//printf ("\n");
};
//////////////////////////////////////////////////////////////////////////////////////////////////
printf ("array rebuilded: ");
prt_arr(&b[0], alldata, "b");
printf ("\n");
return 0;
}
Готов навязаться в любой проект с разбором "полетов"
А вопрос у меня такой: нужна компактная среда для кросскомпиляции под armv5 (arm926ej-s).Puppylinux очень компактная ОС, было бы классно. Про установку gcc под дистрибутив читал, но для сборки arm-eabi (gcc + newlib) + xwidget (простейший ide с поддержкой GDB, сейчас для меня просто слова) требует кучу зависимостей: gettexinfo, bison, ncurses и т.д. Может кто-нибудь слышал о готовом решении!? сейчас под UBUNTU сижу... Как следствие второй вопрос кто какую IDE пользует, что можете посоветовать, скрипты сборки для make (на хабре есть замечательная статья про универсальный Makefile) .В качестве IDE предлагаю code blocks, но не рекомендую :-) Фу-у-у-ух, пока все :-)