в свое время щщупал contiki в виде исходов. довольно интересная штука, даже многозадачная (2 задачи кажется одновременно). довольно много исходов на асме.
а насчет sdcc- пробовал и его. интересная вещь! но затруднено применение на практике. вот пример:

void MyFunc(int iOper1, int iOper2, ... int iOperN)
{
...
}

....
MyFunc(0, 1, 2....);

так вот вызов скомпилится примерно в следующий код:
ld hl,0
push hl
ld hl,1
push hl
ld hl,2
push hl
...
call MyFunc

передача параметров через стек на z80- зряшная потеря тактов процессора, хотя очень удобная адресация из вызываемой процедуры.

(хотя я так подозреваю, что просто не нашел опций у компилера, изменяющих формат вызова)