У МИПСов-то не выровнены. Ему надо из потока байтов по невыровненному указателю вытащить long. Смотри: на МИПСе этого не сделать иначе, какchar *p;
int32 i;
...
*((char*)&i + 0) = *(p + 0);
*((char*)&i + 1) = *(p + 1);
*((char*)&i + 2) = *(p + 2);
*((char*)&i + 3) = *(p + 3);
(Ну, и для другого эндиана добавить вариант)
Этот код будет работать и на PIC16 и на МИПСе. Но для ПИК16 из-за изворотов с FSR код получится громоздкий. Вот fk0 и хочет подменить его для 8-битника таким:
i = *((int32*)p);