ECL Format: differenze tra le versioni
m (→Program) |
m (→Program) |
||
Riga 8: | Riga 8: | ||
Il terzo byte ''probabilmente'' è il numero di versione (02 per POL093). | Il terzo byte ''probabilmente'' è il numero di versione (02 per POL093). | ||
− | =Program= | + | =Program - codice 04= |
Questo blocco definisce la direttiva program. | Questo blocco definisce la direttiva program. | ||
Versione delle 23:47, 22 feb 2015
Il file ECL sembra avere una struttura a blocchi. Di seguito sono elencati quelli noti, riportati nello stesso ordine in cui compariranno all'interno del file.
Header
L'header sembra essere fisso: 43 45 02 00 00 00, e sono i primi 6 bytes di ogni file.
I primi due bytes rappresentano il magic number del formato ("CE").
Il terzo byte probabilmente è il numero di versione (02 per POL093).
Program - codice 04
Questo blocco definisce la direttiva program.
Non è sempre presente: ad esempio, non è usato nello script generale di startup start.ecl.
I primi 6 bytes sono 04 00 10 00 00 00, segue un blocco di 13 bytes di cui solo il primo sembra essere usato ed indica il numero di argomenti accettati dal blocco program (01, 02, etc...).
Gli altri bytes sono lasciati a NULL.
Usages
I file .em contenenti le funzioni di sistema importati con la direttiva use sono specificate immediatamente dopo l'header. Ogni blocco use ha una dimensione variabile.
I primi 6 bytes sono 01 00 00 00 00 00, segue un blocco di 13 bytes così suddiviso:
- bytes 1-9: contengono il nome dell'usage sotto forma di stringa a lunghezza fissa
- byte 10: indica il numero di funzioni utilizzate da questo file
- bytes 11-13: sempre NULL
Segue la lista delle funzioni utilizzate da questo file, sotto forma 34 bytes ripetuti per il numero di volte indicato dal byte 10. Di questi 34 bytes, i primi 32 rappresentano una stringa a lunghezza fissa contenente il nome della funzione, mentre gli ultimi due sono sempre 00 01.
"basic" e "basicio" sembrano essere sempre i primi due usages e sono inclusi implicitamente, e ribaditi nel file ECL, anche se non dichiarati nello script.