Voodoo vertaler is 'n implementering van die Voodoo programmeertaal. & Nbsp; Die Voodoo programmeertaal is 'n lae-vlak programmeertaal, ekserpering oor die platform se opdrag stel en roep konvensies, maar andersins die verlaat van die programmeerder gratis iets te doen nie.
Voodoo vertaler is in Ruby geskryf en genereer kode vir i386-versoenbaar is, AMD64, en MIPS CPUs. Ondersteuning vir bykomende teiken CPUs word beplan vir die toekoms.
Gebruik
Daar is twee hoof maniere om die Voodoo vertaler te gebruik: deur die loop van die voodooc program, of deur die gebruik van die Ruby API.
Die voodooc program stel 'n Voodoo bron lêers. Die gebruik daarvan is in die voodooc.1 manpage beskryf, ingesluit in die verspreiding. Die volgende is 'n voorbeeld van hoe voodooc kan gebruik word om 'n uitvoerbare hallo uit 'n bron lêer hello.voo te skep:
$ Voodooc hello.voo
$ Cc hello.o -o hallo
$ ./hello
Hello, world!
'N uitvoering van hello.voo kan gevind word in die gids toets van die verspreiding.
Die tweede manier om die Voodoo vertaler te gebruik, is deur dit uit 'n Ruby program. Dit kan gebruik word, byvoorbeeld,-kode vir die teiken platform te genereer sonder om 'n .voo lêer te skep. Die volgende is 'n voorbeeld wat 'n voorwerp lêer genaamd fact.o, met 'n definisie van 'n funksie feit wat bere factorials:
vereis 'voodoo'
generator = Voodoo :: CodeGenerator.get_generator: argitektuur =>: i386,
& Nbsp;: formaat =>: elf
generator.export: feit
generator.add_function_label: feit
generator.add_function [: N],
& Nbsp; [: ifle, [: N, 1],
& Nbsp; # dan
& Nbsp; [[: terugkeer, 1]],
& Nbsp; # anders
& Nbsp; [[: laat,: x,: sub,: n, 1],
& Nbsp; [: stel,: x,: noem,: Trouens,: x],
& Nbsp; [: terugkeer,: Mul,: n,: x]]]
File.open ('fact.o', 'w') {| outfile | generator.write outfile}
Die Voodoo samesteller API wat 'n beskikbare Ruby programme is in die API dokumentasie beskryf
Wat is nuut in hierdie release:.
- < li> Verenigbaarheid met Ruby 1.9, bykomend tot Ruby 1.8; maak toets verslae nou die aantal geslaag en misluk toetse.
- Die veel-VARs toets is verdeel in baie-argumente, baie-argumente-stert, en baie-inwoners.
Wat is nuut in die weergawe 1.0.1:
- Hierdie weergawe voeg 'n aantal verbeteringe aan die parser , wat nou verslae bronkode plekke vir al die foute en kan rapporteer verskeie foute in blokke, funksies, en conditionals. Verskeie toetse vir die parser is bygevoeg.
- Hierdie update n parseerfout op verklarings gevolg deur kommentaar en 'n probleem wat veroorsaak het dat die ontleder om te misluk op 'n leë insette.
Wat is nuut in die weergawe 1.0.0:
- ARM-kode generator: Die samesteller kan nou genereer vergadering en ELF voorwerp-kode vir die ARM argitektuur.
- Verbeterde fout verslagdoening. Meer foute opgespoor en foute word in makliker fout boodskappe te verstaan
- Validator module: hierdie nuwe module kan gebruik word om gegenereer Voodoo-kode te bekragtig. Dit word deur die ontleder Geperste kode te bekragtig.
- Feature koppelvlak: kenmerke van die implementering kan programmaties en uit die opdrag lyn bevraagteken word beide .
Wat is nuut in die weergawe 0.7.0:
- Blocks: dit bied bestek waarin plaaslike veranderlikes kan word gedefinieer met laat. Sulke veranderlikes bestaan uit die einde van die laat verklaring tot die einde van die blok. Blokke kan voorkom in enige plek waar 'n aksie kan voorkom. Hulle is begin met blok en geëindig met die einde blok.
- Vasgeketting conditionals: is dit nou moontlik quot te skryf en, anders as & quot ;, in plaas van wat 'n geneste if in die ander klousule .
- Shift en draai: skuif aksies (asr, BSR, SHL, SHR) en draai aksies (rol, ROR) is bygevoeg .
- Terug sonder waarde: terugkeer kan nou gebruik word sonder om 'n uitdrukking te evalueer. Dit veroorsaak 'n ongedefinieerde waarde van die funksie teruggestuur word.
Wat is nuut in die weergawe 0.6.3:
- Hierdie vrystelling stel op-uitdrukkings: voorvoegsel n etiket, plaaslike veranderlike, of heelgetal met 'n @, is die waarde behandel as 'n adres en die woord gestoor by daardie adres is terug.
- Daarbenewens is 'n paar foute ontdek in die pad snare is ingebou in gegenereer vergadering kode.
- Hierdie goggas is vasgestel, en die weergawe 0.6.3 hanteer nou snare wat al 256 moontlike byte waardes korrek.
Wat is nuut in die weergawe 0.6.2:
- Hierdie vrystelling fixes foute in die implementering van opset woord vir i386 en AMD64 en voeg toetse vir die gevalle wat voorheen nie korrek werk nie.
Kommentaar nie gevind