Voodoo Compiler on täytäntöönpano Voodoo ohjelmointikieli. & Nbsp; Voodoo ohjelmointikieli on matalan tason ohjelmointikieli, hahmotuskykyyn yli alustan käskykanta ja kutsuvan yleissopimukset, mutta muuten jättäen ohjelmoija vapaa tekemään yhtään mitään.
Voodoo Compiler on kirjoitettu Ruby ja luo koodin i386-yhteensopiva, AMD64 ja MIPS-suorittimet. Tuki lisätavoitteen suorittimia on suunnitteilla tulevaisuudessa.
Käyttö
On kaksi tapaa käyttää Voodoo kääntäjä: ajamalla voodooc ohjelmaa, tai käyttämällä Ruby API.
Voodooc Ohjelma kokoaa Voodoo lähdetiedostoihin. Sen käyttö on kuvattu voodooc.1 manuaalisivun, mukaan jakeluun. Seuraavassa on esimerkki siitä, miten voodooc voidaan käyttää luomaan suoritettavan hello lähdetiedoston hello.voo:
$ Voodooc hello.voo
$ Cc hello.o -o hei
$ ./hello
Hei maailma!
Toteuttamiseen hello.voo löytyy hakemistosta testi jakelun.
Toinen tapa käyttää Voodoo kääntäjä on käyttää sitä Ruby ohjelmasta. Tätä voidaan käyttää esimerkiksi tuottamaan koodia kohdekäyttöympäristössä luomatta .voo tiedoston. Seuraavassa on esimerkki, joka luo objektin tiedosto nimeltä fact.o, joka sisältää määritelmän funktion mikä laskee factorials:
vaativat "voodoo"
generaattori = Voodoo :: CodeGenerator.get_generator: arkkitehtuuri =>: i386,
& Nbsp;: format =>: tonttu
generator.export: se,
generator.add_function_label: se,
generator.add_function [: n],
& Nbsp; [: ifle, [: n, 1],
& Nbsp; # sitten
& Nbsp; [[: paluu, 1]],
& Nbsp; # muuta
& Nbsp; [[: anna, x,: sub,: n, 1],
& Nbsp; [: set, x,: soita,: Itse asiassa: x],
& Nbsp; [: paluu,: Mul: n,: x]]]
File.open (fact.o "," w ") {| outfile | generator.write outfile}
Voodoo kääntäjä API, joka on saatavilla Ruby ohjelmia on kuvattu API-dokumentaation.
Mitä uutta strong> tässä julkaisussa:
- < li> Yhteensopivuus Ruby 1.9, lisäksi Ruby 1,8; tehdä testi ilmoittaa nyt määrä kulunut ja epäonnistuneet testit.
- monet-vars testi on jakautunut moniin-args, monet-args-hännän, ja monet-paikalliset.
Mitä uutta strong> versiossa 1.0.1:
- Tämä versio lisää useita parannuksia parseri , joka raportoi lähdekoodin paikkoja kaikki virheet ja voi raportoida useita virheitä sisällä lohkot, toiminnot, ja conditionals. Useat testit parseri on lisätty.
- Tämä julkaisu korjaa jäsennysvirhe koskevat julkilausumat kommentteja ja ongelma, joka aiheutti jäsennintä epäonnistua tyhjä tulo.
Mitä uutta strong> versiossa 1.0.0:
- ARM-koodin generaattori: kääntäjä voi nyt tuottaa kokoonpano ja ELF oliokoodiin ARM-arkkitehtuurille.
- Parannettu virheiden raportointi: enemmän virheitä havaitaan, ja virheet raportoidaan helpompi ymmärtää virheilmoituksia.
- Validator moduuli: tämä uusi moduuli voidaan käyttää oikeuttamaan syntyy Voodoo koodia. Sitä käytetään jäsentimellä vahvistaa jäsennetään koodia.
- Feature liitäntä: piirteitä täytäntöönpanoa voidaan suorittaa hakuja sekä ohjelmallisesti ja komentoriviltä.
Mitä uutta strong> versiossa 0.7.0:
- lohkot: nämä tarjoavat laajuuksia jossa paikalliset muuttujat voivat määritellään yhdessä let. Tällaisia muuttujia ovat olemassa lopusta anna lausuman loppuun asti lohkon. Lohkot voi esiintyä missä tahansa paikassa, jossa toiminta voi tapahtua. Niitä alkoi lohko ja päättyi loppublokin.
- Kahlittu conditionals: se on nyt mahdollista kirjoittaa & quot; if & quot ;, sijasta edellyttää sisäkkäisiä jos muu lauseke.
- Shift ja pyöritä: liittyvät toimet (ASR, BSR, SHL, SHR) ja kierrä toimet (rol, ROR) on lisätty.
- Paluu arvottomina: paluu voidaan nyt käyttää täsmentämättä ilmaisua arvioida. Tämä aiheuttaa määrittelemätön arvo on palannut toimintoa.
Mitä uutta strong> versiossa 0.6.3:
- Tämä julkaisu esittelee at-ilmaisuja: prefixing etiketti, paikallinen muuttuja, tai kokonaisluku @, arvo käsitellään osoitteen, ja sana säilytettiin että osoite palautetaan.
- Lisäksi joitakin bugeja paljastui tavalla jouset oli koodattu luotu assembly.
- Nämä bugit on korjattu, ja versio 0.6.3 nyt käsittelee jousille sisältää kaikki 256 mahdollista tavu arvot oikein.
Mitä uutta strong> versiossa 0.6.2:
- Tämä julkaisu korjaa bugeja toteutusten ase- sana i386 ja amd64 ja lisää testit tapauksissa aiemmin ei toimi oikein.
Kommentteja ei löytynyt