Newsgroup: it.comp.lang.c++
Titolo: Codice sorgente libreria standard di C

La libreria standard di C (stdio) in che linguaggio ï¿œ scritto?
 
 
Ciao
 
Nero23

 La libreria standard di C (stdio) in che linguaggio è scritto?
 
In C con qualche riga di Assembler 
 
 
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---


 
Credo di aver  esposto male la domanda.
Il linguaggio C come nasce? L'inventore cosa ha fatto per permettere noi 
di programmare in C?
Quando inserisco printf(...); nel codice, l'operazione di visualizzare 
il dato sulla console dove ï¿œ descritto e con quale linguaggio?
 
 
 

La libreria standard di C (stdio) in che linguaggio � scritto?
 
Gli header direi in C. 
L'implementazione suppongo dipenda dal compilatore.
 
friol


 
printf sta in in libc.so (la dll in linux che e' la libreria C)
Per win non ne ho idea
 
 
 

 il dato sulla console dove è descritto e con quale linguaggio?
 
Ma non la finisci mai?
 
A questa domanda già ho risposto. Forse che vuoi ulteriori dettagli?
 
La funzione printf... non fa parte del C, è una funzione di libreria, è una 
normalissima funzione scritta in C, si trova già compilata in formato 
oggetto nelle librerie del tuo compilatore, un normalissimo file che sta
nella directory dove il tuo sistema operativo conserva le librerie del tuo 
compilatore. Il nome esatto dipende dal tuo compilatore, dalla versione 
del tuo compilatore, dal tuo sistema operativo e dalla tua macchina.
Sul mio sistema sta nel file /lib/libc.so, sul tuo non so.
 
 
 
 
 
/lib


Credo che Tu sia uno che vuole esplorare i meandri dei
circuiti integrati.
 
Le librerie standard non fanno parte del linguaggio 'C'.
sono come dire...Pezzi di programmi(codice sorgente) che assemblati (dai 
compilatore e linker) a quelli che scrive chi programma permettono 
appunto la compilazione e il linking del tuo eseguibile (hello.exe).
 
Alla fine della fiera L'eseguibile è un file che contiene codici 
operativi caricati in memorie varie disco,ram,cache e eseguite dalla 
micro elettronica della cpu e controller vari (vedi quello del tuo monitor).
 
Questi pilotano le operazioni eseguite su di un dato dispositivo sia 
esso un LCD ,stampante ,modem eccetera .
 
Per approfondimenti puoi leggerti libri su archittettura e 
organizzazione dei calcolatori e implementazione di sistemi operativi.

 La libreria standard di C (stdio) in che linguaggio ï¿oe scritto?
 
Dipende dall'implementazione. In alcune (ricordo il vecchio Turbo C di un ventennio fa, che aveva i sorgenti di libreria disponibili), molte funzioni (specie quelle su stringhe) erano scritte interamente in assembler.
 
Le implementazioni originali di C sono nate dal BCPL e dal B. Ad un certo punto, i nuovi compilatori sono stati scritti in C stesso. E` un obiettivo quasi obbligatorio, per qualunque inventore di qualunque linguaggio di programmazione, prima o poi riscrivere il compilatore nello stesso linguaggio :)
 
Chiaro che le primissime implementazioni erano scritte in Assembly su qualche macchina PDP del tempo.
 
Qui trovi un po' di info sulla storia del C:
http://www.le.ac.uk/users/rjm1/cotter/page_06.htm
 
 
 

 Per win non ne ho idea
 
Dipende dalle implementazioni. 
 

 il dato sulla console dove ï¿oe descritto e con quale linguaggio?
 
Il codice per printf() risiede in qualche libreria compilata e distribuita con il compilatore. Come ti e` stato gia` detto, sotto Linux c'e` libc. Ogni compilatore ha, ovviamente, le proprie implementazioni delle funzioni standard C per cui la risposta e` che dipende dal compilatore che stai usando. Anticamente c'erano i vecchi binari .lib sotto Windows; oggi ci sono le DLL. Di solito, le funzioni di libreria sono scritte o interamente in assembly o in codice C con una buona fetta di built-in assembly.
 


 
Dipende tutto dalle implementazioni a quanto sembra
 

 Dipende tutto dalle implementazioni a quanto sembra
 
Infatti.
 

 La risposta corretta e` che dipende dalle implementazioni.
 
 
Ed è anche quella che si chiama libc, in questo caso


 Ed è anche quella che si chiama libc, in questo caso
 
E` una implementazione specifica.
 


Certo,non  ho mai asserito il contrario
La discussione era incentrata su una comune distro linux,ecco perchè il 
nome è libc in questo caso
Fatti un Buon Natale
Ci scriveremo  poi o qui o su it.lavoro.informatica
 

 La discussione era incentrata su una comune distro linux
 
No, Linux l'hai messo in mezzo tu. La domanda originale e`: 
 
"Il linguaggio C come nasce? L'inventore cosa ha fatto per permettere noi 
di programmare in C? Quando inserisco printf(...); nel codice, l'operazione di visualizzare il dato sulla console dove e` descritto e con quale linguaggio?"
 
Il discorso e` generale. Linux e` uno dei tanti sistemi operativi. Sotto un sistema operativo ci possono essere piu` implementazioni di un linguaggio. La libc e` UNA implementazione. Che poi a nessuno venga mai in mente di sostituire il GNU C/C++ su piattaforme UNIX/Linux, e` un altro discorso. Sotto Windows, di implementazioni ce n'e` una valanga.


 
Ma non ho mai messo in discussione questo, sono perfettamente d'accordo
 

>> printf sta in in libc.so (la dll in linux che e' la libreria C)
 
ma printf ricordavo che poteva essere inclusa nell'eseguibile senza
chiamare libreria .dll esterne
 
ok conviene chiamare printf da una libreria esterna ma potrebbe anche
essere inclusa nel file dell'eseguibile [a quello che ricordo]
per me dipende dal compilatore 



 
Si chiama link statico
Per gcc esiste l' opzione -static che fa inglobare dal linker i moduli usati
Per default fa eseguire al linker  un bind  dinamico