Newsgroup: it.comp.lang.c
Titolo: Dettagli implementazione

Ciao a tutti,
scusate le domande sceme, ma vorrei dei chiarimenti:
- nella libreria del c (libc standard di qualsiasi sistema di tipo 
UNIX), come sono implementate le funzioni stesse? Sono scritte in c, in 
assembly, usano le system calls...
- e possibile scrivere un programma in assembly senza far uso di nessuna 
libreria e di nessuna system call?? (credo usando gli interrupts del 
bios...)
- devo usare qualche accorgimento per usare direttamente gli interrupts 
del bios? (se il kernel nasconde i dettagli hardware, rende anche 
impossibile l'utilizzo degli interrupts se si e' nel sistema stesso?)
Grazie...

 Grazie...
Su questo non so niente.
Enrico

 CioÃš creare una sorta di kernel?
Una cosa del genere, ma non ho intenzione di scrivere un kernel o un 
nuovo sistema operativo, solo un programma totalmente indipendente 
(magari poi anche dalle funzioni fornite dal bios :D ), tanto per 
sperimentare, curiosita' ecc...
grazie

 grazie
Considera che se scrivi in linguaggio macchina, ti "specializzi" su una
architettura o su un processore specifico, per cui non vedo la necessità
(magari ci sono dei motivi che non considero). E poi non credo funzioni
se c'è già un kernel avviato, o almeno non penso, ma qui esco totalmente
fuori da quello che sono le mie conoscenze in materia...
Enrico

 tanto per sperimentare, curiosita' ecc...
È possibile ma solo se il sistema operativo te lo permette.
Quello che vuoi fare era più o meno la norma sui sistemi Microsoft 
fino al Win95 (o forse anche Win 98, ma non lo conosco).  I S.O. più 
recenti non permettono all'utente normale di accedere alle funzioni 
fornite dal BIOS (od anche più semplicemente ai registri di controllo 
dell'hardware).  Il kernel si pone fra l'hardware e gli utenti che 
devono usare le system calls per attivare i driver (inclusi nel kernel 
stesso) che gestiscono l'accesso all'hardware.
Senza S.O. operativo devi conoscere l'hardware (a partire dal 
microprocessore stesso) molto nei dettagli per poter gestire 
l'accesso.  Inoltre in pratica dovresti partire dal loader, visto che 
se non hai un S.O. non hai chi te lo carica in memoria e che per ogni 
funzionalità dovresti scrivere i driver.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 dovresti scrivere i driver.
Si avevo pensato che alla fine si arrivava ad una cosa del genere, al 
massimo per vedere se funziona lo uso su un simulatore tipo qemu o 
bochs, speravo si potesse accedere a quelle funzionalita' (bios) anche 
da sistema operativo, ma se cosi' non e'...
grazie

 anche da sistema operativo, ma se cosi' non e'...
Ammesso che tu possa trovare un compilatore adatto su Bochs puoi usare 
FreeDos od una vecchia versione di MS-DOS (l'ultima mi sembra fosse la 
versione 6.22).  Questi sistemi operativi ti danno tutti gli accessi 
all'hardware ed al BIOS.


 impossibile l'utilizzo degli interrupts se si e' nel sistema stesso?)
Sě (risposta alla domanda tra parentesi).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

   
Su CPU x86 Windows usa solo due dei livelli a disposizione:
lo 0 per il kernel e i driver, il 3 per il resto.
b.