Programación General > ASM (Ensamblador)
Programar La Gpu
CodigoDavid:
Mis dudas son unas "cuantas", y esque, estoy en estas:
(1)Quiero programar directamente el hardware, graficos, teclado, raton, sonido.
{
Estamos en que para hacer esto, de buen principio ni pensarlo de hacerlo bajo, por ejemplo WinXP por que simplemente protege la memoria asignandole una zona virtual de memoria a cada proceso y analizandola a su voluntad para que el proceso no acceda a zonas de memoria de otro proceso(problema numero 1), me direis muy bien, utiliza la API de windows y ya esta, pero yo digo, no esta!! por que no pienso utilizar esa API........no de momento, la solucion mas facil seria programar en entorno MS-DOS, pero tenemos el problema de la barrera de los 640 Kbytes, podria utilizar directamente el hardware y tal con las interrupciones, pero........... y si mi programa que haga ocupa mas de 640 Kbytes en memoria que?, ahy viene una duda/pregunta, aunque todos sabemos que MS-DOS tiene la barrera de los 640 Kbytes, y aun teniendo la memoria extendida su uso es muy limitado, como al fin y al cabo MS-DOS es un programa mas echo en ensamblador, hay alguna manera de poder utilizar toda la memoria disponible en el PC mediante algunas rutinas en ensamblador y tambien extender los 16 bits a 32 bits, superando asi las barreras, es decir, si yo tengo por ejemplo 512MB de memoria RAM fisica en el ordenador, pues poder utilizarlos todos y no 640KB solamente, igualmente el tema de la cantidad de bits, osea que aunque los programas de MS-DOS sean de 16 bits, de alguna manera yo puedo hacer programas corriendo en 32 bits aunque MS-DOS no lo sea mediante el apoyo de algunas rutinas de ensamblador? no pido que me digais como se hace, simplemente pido que alguien me diga si se puede hacer lo que yo he dicho o no, lo demas ya es trabajo mio.........,
}
(2)Programar graficos, pero nada de VGA ni SVGA, sino una GPU(si si, una aceleradora en el AGP)
{
aqui viene mi mayor duda, y es que por internet veo montones de tutoriales del modo 13h, que si VGA, que si SVGA, VESA 1.0 y 2.0, tenemos que:
VGA: 256 colores, caca de la vaca, no me sirve, no me conformo.........
SVGA: otro tanto de lo mismo.....
ESTANDAR VESA: 16 millones de colores y todo lo que tu quieras, pero tampoco me conformo por su lentitud
explicacion de por que no me sirve lo del vesa:
por la profundidad de color si me serviria, pero, imaginaros que tengo que hacer un sistema operativo como el windows, con 32 bits de color, esto es, 16 millones de colores, pero como imaginareis, ni de coña tendra la velocidad que tienen los graficos del windows, por que aunque alguien no lo sepa y aunque lo parezca, windows NO esta echo con vesa, ese sistema accede directamente al hardware, y en ordenadores modernos ya no estamos hablando de VGA ni SVGA si no de GPU o "Graphics Accelerated Unit", o lo que es lo mismo, targetas aceleradoras 3D de alto rendimiento, con procesador propio, algunas que llegan a tener 256MB de memoria de video GDDR3(la mia, una 6800GT........), y ahi viene el problema, veo un monton de paginas de los modos anteriores, pero todavia no he encontrado ninguna que hable de como acceder directamente a ese tipo de hardware, y mis preguntas son, ¿se accede directamente a la aceleradora 3D o tan solo al bus AGP?¿que interrupcion es la encargada del bus AGP o de la targeta aceleradora?¿cuales son las direcciones de memoria?¿que registros tiene el procesador(GPU) propio de la targeta aceleradora?¿alguien sabe el nombre de estos registros? pues eso, alguien sabe "algo" sobre el tema? por que, existir tiene que existir algo por c******, por que los sistemas operativos que existen como windows, no salen de la parrilla como por arte de magia..............................................e inevitablemente deben usar alguna "cosa" para realizar sus cometidos, "algo" que si ellos pueden utilizar programandolo en ensamblador y ese "algo" como por ejemplo una Nvidia GeForce 6800GT 256MB GDDR3 esta en mi ordenador, pues por c****** debo de poder programarlo yo de alguna manera utilizando ensamblador, ¿existe algun libro al respecto a poder ser en castellano?, recuerdo, que nada de APIS ni DirectX ni OpenGL ni nada por el estilo, empezando desde 0(programacion del hardware pura y dura.....)MUCHAS GRACIAS
Eternal Idol:
Para la primera pregunta podes usar memoria extendida como decis (XMS) o pasar de modo real (16 bits, el modo en que arranca cualquier x86) a modo protegido (32 bits, el modo en que trabajan Windows o Linux).
El libro ensamblador para DOS, Linux y Windows tiene un capitulo sobre 32 bits bajo MS-DOS (el ultimo para ser mas exactos).
Eternal Idol:
En cuanto a la segunda pregunta segun tengo entendido Windows no realiza el acceso directo a la AGP sino que los drivers, en este caso los de nvidia, son los encargados de este trabajo.
CodigoDavid:
--- Cita de: "Eternal Idol" --- En cuanto a la segunda pregunta segun tengo entendido Windows no realiza el acceso directo a la AGP sino que los drivers, en este caso los de nvidia, son los encargados de este trabajo.
--- Fin de la cita ---
Si, pero, dejando de lado como lo haga windows, una aceleradora 3D es una maquina electronica mas como cualquier otra, y sabiendo esto, supongo que tambien tiene sus direcciones de memoria, IRQS etc etc etc ¿no?................por que, esos drivers, ¿como se programan a bajo nivel? no quiero dependencia de windows, quiero programar yo la targeta......... :comp: , y bueno, los que en su dia programaron el windows supongo que tendrian que hacerlo en ASM, logicamente, por lo que debe de haber alguna manera, o es que yo soy marciano y esos programadores venian con un cerebro de serie que ya sabia programar lo que digo? :alien: , logicamente no.................
Eternal Idol:
En su amplia mayoria Windows (siempre hablo de NT) esta hecho en C, hay bastante rutinas de asm en la inicializacion y todo lo que sea dependiente de la motherboard en el HAL.
Intenta conseguir la documentacion de la placa si es que existe, intenta conseguir un driver para Linux si es que existe y siempre queda la opcion de hacer ingenieria reversa sobre el driver para Windows.
Navegación
[#] Página Siguiente
Ir a la versión completa