Столкнулся с такой фишкой в SDCC:

Код:
print ("Hello World\r");
компилит строку целиком кудато в память, и отправляет её поинтер. А вот что-то на вроде
Код:
unsigned char string[255]={"Hello World\r"};
генерит что-то вообще страшное... на инициализацию каждого байта уходит примерно 15-17 байт кода на асме...
а вот если сделать что-то типа функции initarray
Код:
(array,"Hello World\r");
прога ваще умирает нах...

мож я что-то не так делаю?

и ещё... из разряда это интересно, но не пытайтесь повторить это дома:
Код:
SPI_Send(Address>>24);
SPI_Send(Address>>16);
SPI_Send(Address>>8);
SPI_Send(Address);
Вот это ваще сказка, кода рождается чуть ли ни на 1,5Кбайта

Поставил IAR-ку... вешь интересная, но сугубо для Эмбедедов ИМХО, зато поддерживает страницы при правильной настройке.


Код:
/*
    In this example banks are defined to work with the MMU in cs64180 
    Banked code area is 4000-7FFF. The physical memory banks starts at 50000 
    Banks are selected by BBR, here BBR will be 4C,50,54,58... 
    Set the "bank" segments initial_address,size,size*10  
*/
-b(CODE)CODE=4C4000,4000,40000

/*
    If using a simple latch to select memory banks: 
    Set the "bank" segments initial_address,size,bankincrement  
    -b(CODE)CODE=4000,4000,10000 banks will be numbered 00,01,02...
в ближайшее время попробую чтонить компильнуть в ИАРке, если будет что рассказать - расскажу.