O GCC MELT

Original: http://gcc-melt.org/

Pregled

GCC istopiti domene specifičnih visokog nivoa jezika za produženje ili prilagođavanje GNU Compiler Collection (GCC tj, G ++, gfortran, komarac, gccgo, gobjc, …). To je implementiran kao dodatak (GCC sistemi za GNU / Linux, s GCC 4.7, 4.8 ili kasnije) do slobodnog softvera (GPLv3 licenca i FSF za + autorskih prava).
Ciljevi GCC MELT korisnika proširio razvoj GCC, kompilacija, poboljšanje vrednovanja, održavanje ili razvoj značajne softver (kodirano u C, C ++, Fortran, Ada, Go, Objective C ili bilo koji jezik podržan od strane nedavnim direktnog ili unakrsnog kompajler GCC), Za one napredne korisnike, provesti nekoliko dana ili nedelja da uspostave ili prošire svoje kompajler za njihove specifične potrebe treba i GCC MELT treba smanjiti potreban napor, jer je kodiranje u širenju rastopu GCC je mnogo lakše nego ručno razvojni uključite GCC C ili C ++ (ovaj učinkoviti jezik, ali nije pogodna za lako raditi na internom reprezentacije kompajler).

GCC rastopiti (tzv MELT 1.0) se može koristiti i za proučavanje interne reprezentacije kompajler GCC, ako se radi s datotekama ovdje. Na primjer, možete pronaći sve pozive Thanos sa stalnim veličine više od 48 bajtova, ili sve namjene neke od narednih polja strukture-Ure, čije ime sadrži razdoblje (i takav pretres Nha moguće sa tekstom alatima kao što su Grep, oni bi trebali biti Gimple nivo unutar kompajler).

GCC istopiti (tj, vaš dan KVB [cross] kompajler dopunjen Melt [meta] plugin i vlastite ekstenzije) može biti osnovna jedinica specijalizirani za razvoj softvera, na primjer, ugrađeni u grafičkom sučelju ili softvera nizak. Molimo kontaktirajte nas za više informacija.

GCC MELT koristi postojeće kuke plugin za GCC OUU interne reprezentacije srednje klase, posebno GCC Generički Drveće i GCC Gimples, i kontrolu protoka graf. Ovi moćni interne reprezentacije su zajednički za sve originalne jezike, priznao GCC, tako da vaš lokal kodiran u topljenja će biti u stanju nositi se s bilo kojim izvorni kod sastavljen GCC.

Možda, GCC MELT neće biti vrlo korisno za povremeni korisnici GCC, koji rade na malim softverske projekte, ako oni samo koriste neke postojeće ekstenzije GCC, već razvijen sa GCC topi.
Zašto se uspostavi ili proširiti GCC?

GCC kompajler može se prilagoditi ili produžiti (uz pomoć plug-ins ili proširenje topljenja) za:

specifična upozorenja, npr unesite VARIADIC funkcija (na primjer, u biblioteci json_pack Jansson ili g_object_set na GTK Toolkit), ili provjeru neke osobine svakog poziva određenu funkciju;
specifične kodiranje provjeru (na primjer, zahtjev da pthread_mutex_lock pthread_mutex_unlock i uravnotežen u istu funkciju, odnosno da svako bude testiran fopen dati) pravilo;
metrika OUU interne reprezentacije;
pomoći za pravljenja kod ili izvorni kod plovidbe;
dodati nove (pojedinačne aplikacije) modulima ili pripisuje kompajler;
(Aplikacijom ili corporation-) specifične optimizacije (npr fprintf (STDOUT, format …) → E (format, …), itd);
itd ….

Iz perspektive korisnika GCC, podešavanje GCC je lakše koristiti od vanjskog alata. On / ona treba dodati samo dodatni kompilacija zastave (.eg CFLAGS + = = -fplugin rastopiti -fplugin-Arg-melt = dodatno proširenje -fplugin-Arg-melt mode = režim Makefile), ali ne treba promijeniti navike procesa rada.

Kao MELT pomaže da se proširi GCC?

Otopljena jezik domene specifičnih posebno dizajniran kako bi se olakšalo širenje (ili postavka) u GCC, zbog sljedeće:

snažnu vezu sa postojećim GCC internu upotrebu dostupnih plugin opreme: novi GCC prolazi atribute, ugrađene komande, … mogu biti implementirani u topljenja
jednostavan, ortogonalni, Lisp-poput sintaksa
efikasne naplate smeća (u skladu sa implementacijom GCC), koristeći suvremene metode generacija se GC.
dinamički otkucao vrijednosti prve klase (uključujući liste, tuples, zatvaranje postrojenja u bogatoj-based sistem sa jednim meta-klase legacy sa dinamičnim poruku otpremanja, uniformi hash tablicu, boksovao brojeve i informacije kutija GCC -Gimples, drveće , … itd)
u početku za bilo koju vrstu stvari podatak proizvoljan GCC (npr, drvo je, Gimple-x, x-Edge, loop-ih godina na statički način otkucan
anonimne funkcije (i onih koji se zovu) i bogat sistem omogućava funkcionalno objekat, objekat koji odražava stil programiranja
vrlo moćan obrazac uparivanje, posebno za interne GCC stvari kao stablo-x-x i sl Gimple
Dinamički evaluaciju run-time i čitanje Eval-Print-ciklus
dinamički prevedena na C ili C ++ koda (sastavljen i dinamički opterećenih na runtime preko dlopen)
Sposobnost da se miješaju komadića C kod sa glavnim kod topljenja
bootstrapped realizacije: Od topljenje → prevodilac ostvarena u topljenja

Navedeni istopiti moćne značajke smanjiti troškove postavljanja GCC, što omogućava da se koristi GCC GCC moćan sposobnost da se topi. Ipak, čak i kada se koristi otopljena je potrebno razumjeti neke od unutrašnjih organa GCC.

Emitovane C ili C ++ koda generira pažljivo da se uklopi u šta sučelje čeka GCC plugin (GCC preselio iz C do C ++ verzija 4.7, i GCC tope oprezni generirati kod odgovarajuće za svoju verziju GCC).

Praktičan način da razumiju više o osnovnim pojmovima internih GCC, imati odgovarajuću (mali) izvorni kod (kao što su C, C ++, Fortran, Ada, ili, itd), a zatim sastaviti ga sa obradu -fdump sve.

Na primjer (ako imate neke example.cc u direktoriju mjestu) sastavio sa G ++ -fdump stablo-sve -o -C example.cc. On proizvodi stotine dump datoteke, kao što su možda example.cc.073t.phiopt1 koje mogu sadržavati (kao dump datoteke sufiks .phiopt *) baciti izjave Gimple / SSA (Statički Single dodjeli), koji možete pogledati u editoru ili pager ( na primjer, manje od ili example.cc.073t.phiopt1 Gedit example.cc.073t.phiopt1).
Preuzmite i instalirajte GCC istopiti

GCC tope je dostupan ovdje (pod GPLv3 licenca za GNU / Linux sistema s nedavnim GCC), gdje možete dobiti upute o tome kako instalirati, kao i uzorak koda, piše u topljenja.

Molimo da preuzmete i instalirate GCC Melt prije nego što pročitate drugih materijala.


Broj unosa

GCC rastopiti neku dokumentaciju ovdje, gdje možete dobiti tutorial i referenca na topljenje, publikacije i slajdovi razgovora s obzirom na to.


Promovisati GCC istopiti (i srodnih instrumenata)

GCC rastopiti poboljšanje GCC, tako da slijedi istu politiku kao doprinos GCC kompajler. Konkretno, to zahtijeva istu pravnu pozadinu (uzimanje puno vremena). Mi ne možemo prihvatiti čak i male zakrpe bez vašeg doprinosa, legalno u vlasništvu FSF (kao GCC MELT radi).

Zahvaljujući (abecednim redom) Romain Heusler, Emmanuel Haucourt, Aleksandar Lissy, Jeremy Salvucci, Pierre Vittet za njihov doprinos u GCC tope.

Francuskom zastavom tope uglavnom u Francuskoj, jer je njegov glavni doprinos na francuskom slučaj. Naravno, pozdravljamo svaku investitor (iz bilo koje zemlje).


Kontakt informacije

Moja (= Basile Starynkevitch) rad na CEA, na listi za GCC Melt je djelomično financira francuska vlada tijelo DGCIS kroz različite projekte.

Molimo vas da me kontaktirate na e-mail Basile tačka Starynkevitch tačka na CEA francuski industrijski ugovora (kroz CEA, lista) ili kolaborativnih istraživačkih projekata koji se odnose na KVB topi
Poruke o grešci i želje

Molimo prijavite bugove i prijedloge o gcc-melt@googlegroups.com~~pobj i na SourceForge GCC topljenja ulaznica.

Snimljeni ChangeLog.MELT i poruke, mi ćemo uputiti na ove karte, kao što je topljenje SFT (topljenje -source Forge karte).

Učešće u projektima

Zanima me da učestvuju u bilo projekte u kojima proširenje GCC kroz topljenje je.

Related alati

(nepotpuna lista referenci povezanim alati)

Frama-C (osnova za statističke analize, je kompajler za C kod razvijen od strane nekoliko kolega iz HUP, liste);
clang statički analizator kompajler LLVM;
Coccinelle relevantne programe i konverziju motora;
CompCert službeno dokazano kompajler;
GCC Python dodatak;
Kopča (najavila ovdje u septembru 2014.) je sličan topi svijetu LLVM: ona pruža implementaciju koristeći Lisp i sposoban da produži LLVM.
itd … i mnogi (uglavnom komercijalnih) vlasnički softver alat statičke analize programa.

 

Comments are closed.