Voodoo Compiler egy megvalósítása a Voodoo programozási nyelv. & Nbsp; A Voodoo programozási nyelv egy alacsony szintű programozási nyelv, referáló mint a platform utasításkészletet és hívja egyezmények, de egyébként így a programozó szabad csinálni semmit.
Voodoo Compiler van írva Ruby és generál kódot i386-kompatibilis, AMD64, és MIPS CPU-k. Támogatást további cél CPU-k a tervek szerint a jövőben.
Használat
Két fő módja, hogy használja a Voodoo fordító: a futás a voodooc programot, vagy használja a Ruby API.
A voodooc programot állít össze a Voodoo forrás fájlokat. Használata leírt voodooc.1 manpage, a terjesztésben. Az alábbiakban egy példa arra, hogyan voodooc lehet használni, hogy hozzon létre egy végrehajtható hello from a forrás file hello.voo:
$ Voodooc hello.voo
$ Cc hello.o -o helló
$ ./hello
Helló Világ!
Egy végrehajtását hello.voo megtalálható a könyvtárban teszt a forgalmazás.
A második módja, hogy használja a Voodoo-fordító segítségével azt a Ruby programot. Ezt fel lehet használni, például, generálni kódot a cél platform, anélkül, hogy hozzon létre egy .voo fájlt. Az alábbiakban egy példát, amely létrehoz egy objektumot nevű fájlt fact.o, amely meghatározza a függvény tény, amely kiszámítja faktoriális:
igényelnek "voodoo"
generátor = Voodoo :: CodeGenerator.get_generator: építészet =>: i386,
& Nbsp;: format =>: elf
generator.export: tény,
generator.add_function_label: tény,
generator.add_function [: n],
& Nbsp; [: ifle, [: n, 1],
& Nbsp; #, majd a
& Nbsp; [[: visszatérés, 1]],
& Nbsp; # másnak
& Nbsp; [[: hagyja,: x,: sub,: n, 1],
& Nbsp; [: set,: x,: hívja,: Tény, hogy: x],
& Nbsp; [vissza és: mul,: n,: x]]]
File.open ("fact.o", "w") {| outfile | generator.write outfile}
A Voodoo fordító API, amely a rendelkezésre álló Ruby programok ismerteti az API dokumentációt.
Mi az új ebben a kiadásban:
- < li> Használható Ruby 1.9, amellett, hogy Ruby 1.8; hogy tesztet most beszámol a múlt, és nem tesztek.
- A sok-Vars teszt osztották sok-argumentum, sok-args-farkát, és sok-helyiek.
Mi az új a 1.0.1 verzió:
- Ez a verzió hozzáteszi számos fejlesztést, hogy az elemző , amely most beszámol forráskód helyszínen minden hibát és jelentheti több hibát benne blokkok, funkciók, és feltételeihez. Több tesztet az elemző is került.
- Ez a kiadás javít elemzési hibát a nyilatkozatok és észrevételeket és olyan probléma, amely miatt az elemző nem az üres bemeneten.
Mi az új 1.0.0:
- ARM-generátor: A fordító most generálni szerelés és ELF tárgykódja az ARM architektúra.
- Továbbfejlesztett hibajelentés: több hibát észlel, és a hibákat jelenti a könnyebb megérteni a hibaüzeneteket.
- érvényesítése modul: ez az új modul segítségével lehet érvényesíteni generált Voodoo kódot. Ezt alkalmazzák az értelmező által érvényesíteni értelmezett kódot.
- Feature interface: funkciók végrehajtására lehet kérdezni mind programozott, és a parancssorból.
Mi az új verzióban 0.7.0:
- Blocks: ezek biztosítják körök, ahol a helyi változók lehet definiálni let. Az ilyen változók léteznek végétől a let utasítás, amíg a végén a blokk. Blocks előfordulhatnak olyan helyeken, ahol egy akció is előfordulhat. Ezek kezdődött blokk és végül záróblokk.
- láncolva conditionals: most már lehetséges, hogy írjon & quot; else if & quot ;, Ahelyett, hogy a beágyazott, ha a else.
- Shift és forgassuk: változtatására irányuló tevékenységekkel (ASR, BSR shl, SHR) és forgassa akciók (rol, ror) bővült.
- Return érték nélkül: a visszaállás már fel lehet használni megadása nélkül kifejezést, hogy értékelje. Ez okozza egy nem definiált értéket adja meg a funkciót.
Mi az új verzióban 0.6.3:
- Ez a kiadás at-kifejezések: elé egy címkét, helyi változó, vagy egész egy @ értéke kezelik egy címet, és a szó tárolt azon a címen adja vissza.
- Továbbá, néhány hibát fedeztek fel az utat húrok voltak kódolva generált assembly kódot.
- Ezek hibát kijavítottak, valamint verziója 0.6.3 már kezeli húrok tartalmazza az összes lehetséges 256 byte helyesen lesznek.
Mi az új verzióban 0.6.2:
- Ez a kiadás javít hibákat a megvalósítások beállítások szó i386 és amd64 és hozzáteszi, tesztek arra az esetre, hogy korábban nem működött megfelelően.
Hozzászólás nem található