unsigned char j,i,b,d,t1,t2,t3; j = 0; do { t1 = j * 8; i = 0; do { d = 0; t2 = 0x80>>(i&7); t3 = i>>3; b = 0; do { d <<= 1; if(vbuf[(t1+(7-b))*16 + t3] & t2) d++; } while (++b < 8); lcd_port_WriteDR(d); } while (++i < 128); } while (++j < 8);
Суть оптимизация такова: 1. замена операторов for на do...while. Последние принципиально быстрее; 2. вынос выражений, инвариантных циклу, за пределы цикла. Правда, при этом потребовались дополнительные переменные. Если компилятор делает подобную оптимизацию сам, то эффект не будет заметен.