Newsgroup: it.comp.lang.c
Titolo: Creare un compilatore C

Quale e` il modo piu` veloce/facile per scrivere un compilatore C?
Ho scritto per l'universita` un emulatore di una macchina inventata a 
scopi didattici e mi piacerebbe avere a disposizione un compilatore che 
generi codice assembler per essa.
Avevo sentito parlare tempo fa di una specie di "suite/giochino" che 
dimostrava arrivare ad un linguaggio ad alto livello partendo dal basso: 
in pratica bastava scrivere nell'assembly della macchina target alcune 
routine di base e tutto il resto del compilatore veniva costruito a 
partire da queste primitive; ovviamente un compilatore del genere non 
sara` molto sofisticato (soprattutto per quel che riguarda 
l'ottimizzazione) ma per i miei scopi andrebbe piu` che bene. Avete idea 
di come si chiama?
ciao Anto
-- 
Antonio Cuni, 20 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it


Non ho capito molto bene... ma tu vorresti scrivere in ASM
un compilatore C?
--
Lawrence Oluyede
rhy...@myself.com

 generi codice assembler per essa.
IMHO potresti  provare con  il gcc. Dovresti  solo scrivere  la "machine
description"  per la  tua architettura. Con  il  gcc 3.1  c'e` anche  un
sacco di  documentazione su  come fare. Questo dovrebbe  risparmiarti la
creazione ed il collaudo di preprocessore, parser, analizzatore.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Non capisco tutta questa eccitazione per il Multitasking: 
io sono anni che leggo in bagno.

 creazione ed il collaudo di preprocessore, parser, analizzatore.
   Non solo: grazie all'architettura modulare del gcc, sara` anche 
possibile estendere rapidamente il compilatore (o, meglio, l'ambiente di 
compilazione) ad una serie consistente di linguaggi oltre al C (per 
esempio: C++, Fortran 77, Pascal...).
-- 
Alla prossima,
Marco

su internet puoi trovare un testo carino chiamato Let's Build A
Compilter, che spiega passo passo come costruire un compilatore usando
il pascal, ovviamente il tutto puň essere riadatto al c o all'asm o a
quello che preferisci.

 la creazione ed il collaudo di preprocessore, parser, analizzatore.
grazie del consiglio; in effetti immaginavo qualcosa del genere, ma 
credevo che con gcc fosse un po' complicato...
e` possibile anche cambiare il formato di output dell'eseguibile o mi 
devo tenere l'ELF (o l'a.out)? Vabbe`, ora vado a leggermi la doc, anche 
perche` qui siamo OT.
grazie ancora


 un compilatore C?
no di certo! Vorrei scrivere in ASM una serie di primitive sulle quali 
poi il compilatore si appoggia per generare il codice vero e proprio; 
Kronos mi ha detto che con gcc si puo` fare, ora vado a vedere...


 devo tenere l'ELF (o l'a.out)? 
Questo  non dipende  dal  gcc. Questo  si limita  a  produrre il  codice
assembly (sia AT&T che Intel). Spetta poi a gas ed a ld la traduzione in
codice macchina ed il link.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
#include <stdio.h> 
int main(void) {printf("\t\t\b\b\b\b\b\b");
printf("\t\t\b\b\b\b\b\b");return 0;}

 Quale e` il modo piu` veloce/facile per scrivere un compilatore C?
Usare dei tool appositi, vedi lex & yacc o, in alternativa, flex &
bison.  Si parte dalla grammatica in una forma molto simile alla
BNF, si definiscono i token e le produzioni e il compilatore viene
fuori da solo.  In realta' il codice di lex e yacc e' abbastanza  
lungo e incomprensibile, ma con un po' di lavoro lo si puo' adattare.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 traduzione in codice macchina ed il link.
ah, bene, allora sono a posto.
grazie di tutto
ciao Anto


analizzatori lessicali quali flex, byson e yacc...
Trattasi dei moduli shlex e cmd.
Il Ghenio
---------
// TODO: Place your ass here