Дело дошло до формата бинарного файла. Думаю вот так сделать:
- Код: Выделить всё • Развернуть
byte : 8bit;
word : 16bit;
program : {
events_size : word = sizeof(events_table);
pool_size : word = sizeof(const_pool);
events_table : {
event_id: word;
event_address : word; // address of event handler func, relative to code
}[] ;
const_pool : {
const_string : {
len: byte;
str : byte[len]; // no zero termination
}[] ;
const_list : {
len : word;
strings : word[len]; // address of one of const_string, relative to const_pool
}[] ;
};
code : byte[];
};
Добавлено спустя 2 часа 57 минут 1 секунду:Ну вот, вроде все компилируется
Описание девайса:
- Код: Выделить всё • Развернуть
Ram : 512;
Program : 4096;
native {
led {
toggle(int);
}
timer {
start(int);
}
}
events {
onStartup;
onTimer;
}
Иходник:
- Код: Выделить всё • Развернуть
event onStartup
{
timer.start(500);
}
event onTimer
{
led.toggle(1);
timer.start(500);
}
Листинг компилятора:
- Код: Выделить всё • Развернуть
.BYTES 8, 0
.BYTES 0, 0
.BYTES 0, 0, 0, 0, 1, 0, 6, 0
0:
onstartup: CONST_I_2 500
NATIVE_DROP 1
5: RET
6:
ontimer: CONST_1
NATIVE_DROP 0
CONST_I_2 500
NATIVE_DROP 1
15: RET
Добавлено спустя 25 минут 46 секунд:Ограничения по размеру: строки - 254 символа, пул констант - 32768 байт, программный код - 65536 байт, ОЗУ - 32768 байт