Newsgroup: it.comp.lang.c
Titolo: Compilatore

Ragazzi, io non programmo da molto,
ma qualcosa penso di capirla.... ma questa cosa mi sfugge:
copio e incollo dal manifesto GNU
[CUT]
Finora abbiamo un editor Emacs con il Lisp per scriverne i comandi, un
debugger simbolico, un generatore di parser yacc-compatibile, un linker e
circa 35 utility. Č quasi pronta una shell (interprete di comandi). Un nuovo
compilatore C portabile e ottimizzante ha compilato se stesso e potrebbe
essere reso disponibile quest'anno.
[CUT]
cosa significa che un compilatore C ha compilato se stesso???
come č possibile???
questa cosa mi turba parecchio...
penso che quest'altra cosa sia OT... perň:
preso un calcolatore, nuovo di zecca, senza SO, cosa devo fare per
comunicare con la macchina???
devo scrivere 0 e 1 da tastiera??
sicuramente non posso farlo.
ma teoricamente dovrei fare una cosa del genere?
scusatemi se le domande sono sceme, ma sono le 3e08 del mattino.

scusatemi se le domande sono sceme, ma sono le 3e08 del mattino.
figurati x le risposte stupide... sono le 6.47 del mattino
Antonio


sai tra sonnambuli ci si incontra ^___^
grazie delle risposte
ciao diego

per renderlo utilizzabile dall'altro tipo di macchina.
Secondo me tu la vedi troppo complessa.
Se devi scrivere un compilatore C (chiamiamolo pippo) probabilmente
sceglierai di implementarlo in C (e successivamente se nodi dei colli
di bottiglia, potresti provare a reimplementarne alcune parti in ASM
per velocizzare).
Man mano che sviluppi Pippo, provi a compilarlo usando un'altro
compilatore C per vedere come procede il lavoro.
Questo lo fai con qualsiasi progetto.
Quando con Pippo riesci a compilare anche un'altra copia di Pippo
significa che hai fatto un buon lavoro. Infatti i compilatori che non
sono perfetti castano proprio sulla compilazione di programmi
complessi (e un compilatore puo' tranquillamente essere annoverato tra
i programmi complessi).
I compilatori non perfetti non riescono a compilare correttamente
tutto. E' capitato varie volte che alcune distribuzioni Linux
inserissero alcune versioni del GCC nuove anziche' le versioni
ufficiali e che poi non si riuscisse a compilare tutto (e' capitato di
recente con le versioni che inserivano il GCC 2.96 o addirittura il
3.0).
Mox

3.0).
é capitato che un mio collega di lavoro imputasse alla distribuzione
RedHat la colpa del malfunzionamento del suo progetto quando invece
era uno sfondamento dello stack avendo allocato la memoria in modo
statico e non dinamicamente come era piů corretto fare.
Antonio

 ha scritto nel messaggio
news:8lqg3u8mmr1tqojfi...@4ax.com...

capito, grazie a tutti :)

 come è possibile???
Significa che un compilatore è scritto in C ed è quindi in grado di
compilare i sorgenti di se stesso.
Direi che è normale.

 3.0).
il 3.0 funziona benissimo. Solo che ci sono dei problemi ad linkare 
librerie compilate con versioni precedenti di gcc, ma sono problemi di 
linker e non di compilatore.
ciao Anto
-- 
Antonio Cuni, 19 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

 ma teoricamente dovrei fare una cosa del genere?
si, e un tempo lo facevano (per fortuna siamo nel 2002 ;-).
Se vuoi approfondire questi ed altri concetti ti consiglio questo libro:
A. Tanenbaum, "Architettura dei Computer: un approccio strutturato", 
Prentice Hall.
Trovi una mia recensione su 
www.programmazione.it
, area "Altri".


 cosa significa che un compilatore C ha compilato se stesso???
Perche' meravigliarsi ?
Se io costruissi una macchina capace di costruire macchine,
riuscirei, con essa, a riprodurre se stessa.
Nel caso dei compilatori, il discorso e' analogo, salvo che
spesso vengono usati per costruire versioni migliori di
se stessi (solitamente chiamate "nuove versioni").
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG