Voodoo Compiler je implementace programovacího jazyka Voodoo. & Nbsp; Programovací jazyk Voodoo je programovací jazyk low-level, abstrakce přes pokyn platformy nastavit a volání konvence, ale jinak opouštět programátor volný dělat vůbec nic.
Voodoo Compiler je napsán v Ruby a generuje kód pro i386 kompatibilní, AMD64, a MIPS CPU. Podpora pro další cílové CPU je plánováno do budoucna.
Použít
Existují dva hlavní způsoby použití Voodoo kompilátoru: spuštěním programu voodooc, nebo pomocí Ruby API.
Program voodooc zkompiluje zdrojové soubory Voodoo. Jeho použití je popsán v voodooc.1 manuálové stránce, v distribuci. Je následující příklad toho, jak lze voodooc použít k vytvoření spustitelného pozdrav ze zdrojového souboru hello.voo:
$ Voodooc hello.voo
$ Cc hello.o -o ahoj
$ ./hello
Ahoj světe!
Implementace hello.voo lze nalézt v testu adresáři distribuce.
Druhý způsob, jak používat Voodoo kompilátor je pomocí jej z programu Ruby. Toto může být použit, například, pro generování kódu pro cílovou platformu, aniž by k vytvoření souboru .voo. Je následující příklad, který vytvoří soubor objekt nazvaný fact.o, který obsahuje definici funkce fakt, který počítá faktoriály:
vyžadovat "voodoo"
generátor = Voodoo :: CodeGenerator.get_generator: architektura =>: i386,
& Nbsp;: format =>: elf
generator.export: skutečnost
generator.add_function_label: skutečnost
generator.add_function [: n],
& Nbsp; [: ifle, [: n, 1],
& Nbsp; # pak
& Nbsp; [[: return, 1]],
& Nbsp; # jinde
& Nbsp; [[: ať,: x,: sub,: n, 1],
& Nbsp; [: set,: x,: volání,: fakt,: x]
& Nbsp; [: návrat,: mul,: n,: x]]]
File.open ("fact.o", "w") {| outfile | generator.write outfile}
Voodoo kompilátor API, které je k dispozici na programy Ruby je popsáno v dokumentaci API
Co je nového v této verzi:.
- < li> Kompatibilita s Ruby 1.9, kromě Ruby 1.8; provést testy nyní hlásí počet předaných a neúspěšných testů.
- Test many-Vars byla rozdělena do mnoha-args, mnoho-args-ocas, a mnoho-místních obyvatel.
Co je nového ve verzi 1.0.1:
- Tato verze přidává řadu vylepšení analyzátor , který nyní hlásí umístění zdrojový kód pro všechny chyby a mohou hlásit více chyb uvnitř bloků, funkce, a podmínky. Bylo přidáno několik testů na analyzátoru.
- Tato verze opravuje chybu derivační na základě prohlášení následuje komentáře a problém, který způsobil parser selhání na prázdný vstupu.
Co je nového ve verzi 1.0.0:
- ARM generátor kódu: kompilátor může nyní vytvářet sestavy a ELF objektový kód pro architekturu ARM.
- Lepší error reporting:. Více chyb jsou zjištěny, a chyby jsou hlášeny v srozumitelnější chybové zprávy
- Validator module: tento nový modul může být použit k ověření generovaný Voodoo kód. To je používáno parser pro ověření analyzovaných kódu.
- interface funkce: funkce implementace je možno zjistit jak programově i z příkazového řádku .
Co je nového ve verzi 0.7.0:
- bloky: ty poskytnout oborů, ve kterých místní proměnné mohou definovat pomocí pronájmu. Tyto proměnné existují od konce příkazu? Let až do konce bloku. Bloky se může objevit v jakémkoli místě, kde může dojít k akci. Jsou začali s blokem a skončil konci bloku.
- Zřetězené podmínky: je nyní možné psát & quot; else if-quot ;, místo vyžadující vnořené-li v klauzuli jiný .
- Shift a otočte: Akce k převodu (ASR, BSR, SHL, SHR) (ROL, ROR), které byly přidány a otáčet akce .
- Return bez hodnoty: návrat nyní mohou být použity bez udání výraz hodnotit. To způsobí, že nedefinovanou hodnotu, aby se vrátil z funkce.
Co je nového ve verzi 0.6.3:
- Tato verze přináší na-výrazů: By prefixu štítek, lokální proměnné, nebo celé číslo s @, hodnota je považována za adresu, a vrací se slovo uložený na této adrese.
- Navíc, některé chyby byly odkryty ve způsobu, jakým řetězce byly zakódovány v generovaného assembleru.
- Tyto chyby byly opraveny, a verze 0.6.3 nyní zpracovává řetězce, které obsahují všechny možné hodnoty 256 bajtů správně.
Co je nového ve verzi 0.6.2:
- Tato verze opravuje chyby v implementacích vynětí slovo pro i386 a AMD64 a přidává testy pro případy, které dříve nefungovaly správně.
Komentáře nebyl nalezen