[eside-ghost] Desarrollando un cutre kernel...
halls
frikihalls en gmail.com
Mar Sep 13 18:29:16 CEST 2005
wop!
oye me puedes enviar el codigo fuente? yo mismo tb empece a
desarrollar un SO el septiembre pasau con eso de ke estudiaba ARKI...
XDDDD me kede mas o menos en un lugar parecido a ti (un pokitin antes)
y me gustaria ver como has hecho, a ver si te puedo ayudar xD (ke
ahora por fin tengo tiempo! :O)
El 13/09/05, EthDra<ethdra a bildua telefonica.net> escribió:
> Veamos si me explico... el boot sector se carga automagicamente en
> 0x7C00, este boot sector d marras carga el resto del kernel 0x1000 (una
> direccion tan buena como otra cualkiera no? xD) y salta a la primera
> instruccion en 0x1000. Ahi esta el entry point del kernel, q inicializa
> las movidas y salta a codigo c, este donde este (d averiguar donde esta
> se encargar el linker). En la GDT hay dos descriptores, uno para datos y
> otro para codigos, identicos (excepto en el tipo, obviamente) q abarcan
> todo el rango, desde 0 hasta 0xFFFFFFFF, asi que para que el kernel
> funcione, al linker le digo q toda la movida empieza a partir de 0x1000
> y todo va bien. Pongo un string como variable local y la coje bien,
> teniendo en cuenta q el puntero esta en la pila y q el string como tal
> andara alla por 0x011E dentro del fichero del kernel, y en 0x111E en
> memoria, y como el linker sabe q el tema empieza en 0x1000 coje
> correctamente el string tomando la direccion 0x111E.
> El problemo viene al usar una variable global, esta vez el puntero no
> esta en la pila, sino en memoria, alla por 0x01F4 dentro del fichero,
> asi que lo q hace es cargar en un registro el contenido de 0x11F4, q es
> 0x111E, con lo cual, todo es aparentemente correcto excepto por el pqño
> detalle de q no funciona..
> Espero q se entienda lo q e explicado, pq io mismo me e liado :S
> y si, publicare en codigo fuente y una especie de blog con
> consideraciones y problemas durante el desarrollo... si alguien me
> ofrece hosting php4+mysql gratis... :D
>
> Se despide,
> EthDra
Más información sobre la lista de distribución eside-ghost