PDA

View Full Version : Finalmente un kernel, ma...


DanieleC88
13-02-2004, 17:47
WOW! Ce l'ho fatta! Scopiazzando (legalmente) di qua e di la sono riuscito a fare il mio primo kernel (monolitico ed inutile). Non ho alcuno problema eccetto questo:


__asm("push %ax\npush %bx\n"
"mov $0xE00+%%a1,%ax\n"
"mov %%d1,%bx\n"
"int $0x10\n"
"pop %ax\npop %bx"
:
: "a" (c), "d" (color));


dato che non so come usare GAS e, soprattutto, come usarlo in un programma C con delle variabili esterne al codice inline, mi appello alla vostra benevolenza :D : aiutatemi !!!

-- John McCain

Supersubway
13-02-2004, 19:45
I miei complimenti!;)

maxithron
15-02-2004, 01:24
Originariamente inviato da DanieleC88

dato che non so come usare GAS e, soprattutto, come usarlo in un programma C con delle variabili esterne al codice inline, mi appello alla vostra benevolenza :D : aiutatemi !!!



http://linuxassembly.org/howto/gas.html

DanieleC88
15-02-2004, 20:36
Sei un grande, maxithron !
Ho trovato il link alla documentazione per l'inline assembler del DJGPP: completissima, direi. Thanks! :D

maxithron
15-02-2004, 21:32
E' un kernel open source quello che stai facendo?

E se è così, è possibile darci uno sguardo? (che debbo fà....mi piacciono assai i kernel...)

DanieleC88
17-02-2004, 20:28
A parte il fatto che, come ho detto l'altra volta, ho scopiazzato quasi tutto da altri esempi, si, lo... sarà, con la prossima versione. Almeno dato che per ora non fa assolutamente nulla. Beh, è solo un test.

Cmq, dato che me lo chiedi, ti manderò anche i sorgenti. Purtroppo non lo posso fare ora perchè sotto Linux ho dei problemi col mio modem Conexant/Rockwell (sto usando Windows, purtroppo...).
E poi, è scritto tutto in C.

Dato che ti trovi: ancora non sono riuscito a capire come usare nel GAS inline delle variabili che ho dichiarato in C. Bah, per me l'assembler è inferno. :) (hey, ho 15 anni, non ti aspetterai mica che sappia PROGRAMMARE!!!)
Ed ancora: per scrivere del testo sto usando: VRAM = (char*) 0xB8000,
un puntatore alla memoria video per schede non monocromatiche. Ora però ho un problema nel riuscire ad andare a capo ("\n") nelle mie funzioni (semplicemente non lo fanno), e non so come ottenere, usando questo puntatore, a sapere quale sia la coordinata X o Y del cursore :eek: :mc: :cry: !

Bah, quando ti mando i codici poi vedi anche tu :D .
A presto (credo che mi riconnetterò domenica).

recoil
17-02-2004, 20:45
kernel monolitico? :nonsifa:

il signor Tanembaum non te lo perdonerà!

guardate che thread ho ripescato su google gruppi: ci sono dentro due "mostri" come Torvalds e Tanembaum

http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&oe=UTF-8&frame=right&rnum=1&thl=0,1995144635,1995144200,1995140223,1995132729,1995097894,1995089752,1995067092,1995031515,1995134184,1995087001,1995067079&seekm=12595%40star.cs.vu.nl#link1

cionci
18-02-2004, 00:05
DanieleC88: che modello di memoria usi ?

DanieleC88
22-02-2004, 18:16
per cionci: modello di memoria? hmm, non sono tecnico: sono 15enne ed autodidatta... spiegati meglio...

per recoil: si, dovrebbe essere monolitico, credo (significa che è tutto scritto e compilato all'interno del kernel, senza l'uso di moduli o librerie esterne, giusto ?)

per maxithron: allego il tarball del mio OS. AVVISO: non funziona. AVVISO: bisogna modificare il Makefile e speficare USE_C al posto di USE_ASM nella flag MODE per fargli almeno scrivere qualcosa (non so cosa ho sbagliato, ma le mie funzioni in assembler devono proprio essere un completo disastro: il computer addirittura mi si riavvia...). Potrebbero essere necessarie altre modifiche non segnalate....

DanieleC88
22-02-2004, 18:22
Ah, mi ero dimenticato il file zip....

-- ho dovuto eliminare le immagini del logo, dato che avrebbero reso il file zip troppo grande. <logo/logo.h> contiene un'immagine molto vecchia, prima o poi la devo aggiornare....

DanieleC88
24-02-2004, 20:42
Beh, ora ho un nuovo problema: ho spostato il progetto a Windows (per via di Bochs) ma il MinGW compreso con Dev-C++ non mi permette di fare delle operazioni su un file binario (non Phisical Executable) .... AIUTO!!!

DanieleC88
10-03-2004, 20:25
Allora, che ve ne pare? Devo ritirarmi dal mondo della programmazione? :D
(credo proprio di si, visto che nessuno mi ha risposto... :( )

maxithron
10-03-2004, 22:54
Originariamente inviato da DanieleC88
Allora, che ve ne pare? Devo ritirarmi dal mondo della programmazione? :D
(credo proprio di si, visto che nessuno mi ha risposto... :( )


:D Evviva i giovanissimi!!

Ma, se vuoi un mio umilissimo consiglio.....

Ti sei messo di buon impegno a scrivere un kernel e questo è ammirevole se pensi che quando io ho cominciato più di "hello world" non ho fatto(ancora oggi è così per me cmq... :D) ......

Non ho ancora dato uno sguardo ma mi accingerò a farlo in questi giorni.

DanieleC88
09-04-2004, 00:09
Visto il kernel? Adesso sto cercando di migliorarlo leggermente...

Luc@s
13-06-2004, 16:16
come va il progetto??
Non ha un homepage?

DanieleC88
13-06-2004, 19:05
No, niente homepage, per ora... mi sono già registrato su SourceForge.net, ma purtroppo ho dovuto ricominciare tutto dall'inizio, a causa di una perdita di dati. Ora sto provando a riscrivere il tutto in C++.

Luc@s
13-06-2004, 19:24
Originariamente inviato da DanieleC88
No, niente homepage, per ora... mi sono già registrato su SourceForge.net, ma purtroppo ho dovuto ricominciare tutto dall'inizio, a causa di una perdita di dati. Ora sto provando a riscrivere il tutto in C++.


:eek:

lnessuno
14-06-2004, 15:46
boia, 15 anni e sei già abbastanza un folle da creare un kernel... stika :D


complimenti cmq :)

Gogeta ss4
14-06-2004, 19:19
chi mi illumina sul significato di kernel e a cosa serve ?? :) :)
Ne ho sempre sentito parlare ma non so cosè:)
Grazie in anticipo...

DanieleC88
15-06-2004, 22:20
Un kernel a 15 anni? Merito di Internet! (e del tempo libero, non c'ho un c***o da fare!!!! Bello avere 15 anni.)

Il significato di kernel? Per dirlo brevemente, è il cuore del sistema operativo. È quella cosa che fa da intermezzo tra hardware e software, permettendo a queste due parti di convivere perfettamente (migliore è il kernel, più veloce è il computer. Vedi il caso Linux...).

P.S.: in inglese la parola 'kernel' vuol dire 'nocciolo' (fig. 'nucleo'). Questo dovrebbe rendere l'idea del suo ruolo. :)

LukeHack
15-06-2004, 23:05
Originariamente inviato da DanieleC88

P.S.: in inglese la parola 'kernel' vuol dire 'nocciolo' (fig. 'nucleo').
deriva dal tedesco ;)
Das Kern, l'anima

Gogeta ss4
16-06-2004, 11:48
io quest'anno ho studiato i sistemi operativi, so buona parte di assembler (sono arrivato fino all'uso dei servizi bios) e praticamente tutto il c e qualcosa di c++.
Per realizzare un kernel che linguaggio si usa di solito ?
E quanto è impegnativo progettare un primo kernel?(uno di quelli semplici semplici)
Byez

DanieleC88
16-06-2004, 17:58
deriva dal tedesco :)
Das Kern, l'anima

Be', infatti l'inglese è una lingua anglosassone. Parte dell'inglese deriva dalla stessa radice del tedesco.

io quest'anno ho studiato i sistemi operativi, so buona parte di assembler (sono arrivato fino all'uso dei servizi bios) e praticamente tutto il c e qualcosa di c++.
Per realizzare un kernel che linguaggio si usa di solito ?
E quanto è impegnativo progettare un primo kernel?(uno di quelli semplici semplici)
Byez

L'assembler senz'altro ti servirà molto :muro: ...e l'assembler per me é l'inferno!
La cosa più difficile é creare un bootloader (io infatti l'ho solo copiato), e ricrearti le funzioni standard. Per il resto non è molto difficile, ma devi saperti trovare un po' di documentazione su Internet.

DanieleC88
16-06-2004, 18:00
Ah, dimenticavo: se non vuoi complicarti le cose, comincia col programmarlo in C ed Assembler. Per il C++ c'è bisogno di alcune opzioni speciali. [ho aperto una discussione al riguardo: "Un kernel in C++", o qualcosa di simile :D]

Gogeta ss4
16-06-2004, 22:00
in pratica il kernel sarebbe il nucleo del sistema operativo?
Non saprei neanke da dove iniziare...:eek:

DanieleC88
17-06-2004, 19:03
Nemmeno io sapevo da dove iniziare, ma ho trovato che lo sviluppo di sistemi operativi nel mondo è un'attività veramente diffusissima, e che molti di questi sono Open Source. Un buon sito, pieno di link ed esempi è www.osdev.org, specialmente la pagina http://www.osdev.org/projects.jsp . Sempre in questa pagina cerca ItaliOS: tutto italiano, ben commentato e con una sua buona homepage, nella quale troverai una documentazione abbastanza buona per cominciare. Spero che anche tu possa iniziare il tuo OS presto! (meglio se prendi Linux per farlo, comunque)

Se poi hai anche una buona esperienza potrai entrare nel mio fantastico progetto! :sofico: :sofico: :sofico:

DanieleC88
27-06-2004, 17:50
Whooops! M'ero dimenticato del mitico BonaFide! www.osdever.net
Pieno di tutorial - lo troverai utilissimo.
Se sei interessato al mio progetto in C++ per avere un'idea di come cominciare, puoi controllare il thread "Un kernel in C++", inserirò presto il codice sorgente.