Wprowadzenie
TODO Na chwilę obecną rozważam by całkiem usunąć Loffi jako IR. Decyzję podejmę gdy już będę pewny architektury kompilatora.
Zależności
Ogólna specyfikacja Lofficinale zależy od kilku innych istniejących norm:
-
IEEE 754, dla reprezentacji większości liczb zmiennoprzecinkowych oraz semantyki powiązanych z nimi operacji numerycznych.
-
Unicode, dla reprezentacji importowanych lub eksportowanych nazw w modułach Loffi oraz struktury leksykalnej kodu źródlowego Lovage.
Terminologia
TODO
Specyfikacja
TODO
Układ Fizyczny Serializacji
| Bajty | Treść |
|---|---|
|
TODO tablica sekcji
Układ Logiczny Modułu
TODO sekcje
Forma Binarna
Ta część specyfikacji opisuje dokładne formy binarne wszystkich instrukcji. Zobacz Układ Fizyczny Serializacji dla sposobu zakodowania danych.
Magiczna Liczba
Magiczną liczbą dla modułu Loffi jest 0x4c657669 ("Levi").
Dodatek A: Gramatyka Czytelna Maszynowo
{
"copyright" : [...],
"magic" : "...",
"version" : "...",
"tables" : [...],
"opcodes" : [...],
"datatypes" : [...]
}
copyright-
TODO
magic-
TODO
version-
TODO
tables-
TODO
opcodes-
TODO
datatypes-
TODO
tables:
{
"name" : "...",
"layout" : "...",
TODO
}
name-
TODO
layout-
TODO aos, soa, blob, dag
opcodes:
{
"mnemonic" : "...",
"small" : [
{ "type" : "...", "bits" : ... },
{ "type" : "...", "bits" : ... }
],
"operands" : [
{ "name" : "...", "type" : "...", "quantifier" : ... },
{ "name" : "...", "type" : "...", "quantifier" : ... }
],
"doc" : "..."
}
mnemonic-
TODO
small-
TODO
type-
TODO
bits-
TODO
operands-
TODO
name-
TODO
type-
TODO
quantifier-
TODO
doc-
TODO
datatypes:
{
"name" : "...",
"kind" : "...",
"fields" : [
{ "name" : "...", "type" : "...", "align" : ..., "doc" : "..." },
{ "name" : "...", "type" : "...", "align" : ..., "doc" : "..." }
],
"align" : ...,
"doc" : "..."
}
name-
TODO
kind-
TODO enum, bitfield, struct, vector, packed, literal
fields-
TODO
name-
TODO
type-
TODO
align-
TODO
doc-
TODO
align-
TODO
doc-
TODO