Programación General > ASM (Ensamblador)
Programar La Gpu
bob esponja:
no me gusta empezar otro flamewar pero tampoco me gustan las injusticias,
comparar MSDN con el man es como comparar el notepad con openoffice ( para que no surja otro flamewar agrego: office es mucho mejor que openoffice pero con openoffice me sobra ).
el man es una simple documentacion sobre PROGRAMAS explicando su funcionamiento y los parametros que se le pasan con una breve explicacion.
queres las APIS:
la que usa gnome (gtk): http://www.gtk.org/api/
la que usa Kde (qt): http://doc.trolltech.com/3.3/
la de c para linux: www.srsplus.com/en-def-d82f4a834d85/ en/srsplus/api_c_linux.pdf
la de python: docs.python.org/api/api.html
la del kernel: kernelnewbies.org/documents/ kdoc/kernel-api/linuxkernelapi.html
y asi puedo seguir,m no te preocupes que uno de los fuertes del opensource es que hay documentacion de sobra para las aplicaciones y librerias extendidas lo que pasa es que no estan en una sola pagina ( o si... en google ), te recomiendo esto
www.google.com
pone xxx API reference
www.google.com/linux
pone xxx API reference
y va a aparecer mucha documentacion.
la primera vez que lei la comparacion de MSDN con el man la deje pasar, pero esta mal que a los que recien empiezan se los asuste con "el monstruo de linux"
Eternal Idol:
--- Cita de: "bob esponja" --- la primera vez que lei la comparacion de MSDN con el man la deje pasar, pero esta mal que a los que recien empiezan se los asuste con "el monstruo de linux"
--- Fin de la cita ---
La utilizo muchas veces por la simple razon de que incluso compañeros de trabajo me han llegado a decir que man es mejor que la MSDN.
:whistling:
Por cierto en el tema sobre Linux dejaste un mensaje bastante largo pero no te vi responder despues, te invito que lo hagas.
bob esponja:
que el man sea mejor que el MSDN es una gran mentira en eso concuerdo con vos
Eternal Idol:
--- Cita de: "bob esponja" --- que el man sea mejor que el MSDN es una gran mentira en eso concuerdo con vos
--- Fin de la cita ---
:ph34r: Menos mal jeje :comp:
micropais:
--- Cita de: "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
--- Fin de la cita ---
:comp:
me parece que hay un poco de confusion en el tema.
Si, si se puede programar la VGA y la SVGA, lo que falta es informacion sobre los registros . un driver propio en ASM no suele ocupar mas de de dos mil o tres mil lineas e incluso menos si solo queremos algunos modos graficos.
hay un libro bastante antiguo PC INTERNO 5 que muestra como crearnos nuestros driver graficos tanto en ASM ,C y PASCAL.
el código fuente no suele pasar de cien lineas en asembler para modos graficos en concreto. de todas maneras no profundizan mucho y lo que puedas obtener será de los codigos fuente,que por supuesto están en ingles.
Suelen partir de una idea tan basica como iniciar el modo primitivo mediante el bios , para que este haga el trabajo sucio por ejemplo 640x480 16 colores , y mediante manipulacion de registros propios de VGA pasarlo a 256 colores o mas.
hay quien se atreve desde cero pero para eso se necesita conocer donde se toca -
- Aviso de que te puedes quedar sin monitor al forzar la frecuencia del mismo.
de echo estube practicando bastante con los registros aleatoriamente y fue la primera vez que vi al monitor generar ruidos- curioso- ,no me lo cargé pero duro poco aquel monitor - casualidad?-.
de este mismo modo se crean los tan famosos modos chain X hasta 320x400x256 colores , tener en cuenta que en el libro no mencionan las SVGA solo las VGA , estos registros tienen que ser compatibles hacia abajo osea que siempre estan ahí.
yo estube practicando con modos 640x400 y 800x600 y 1024x768 pero en estos últimos modos, habia problemas con la visualizacion del raton , al final lo dejé todo porque aunque sigas los ejemplos al pie de la letra hay cambios bastante decepcionates cuando cambiamos de tarjeta grafica, o dicho de otro modo lo que programaste para una ya no vale para otra salvo si vas probando con bastantes numeros para el mismo modo graficos. un ejemplo del libro para 800x600 es ir probando con llamadas bios con varios numeros supuestamente estandar , algo parecido a lo que hace el windows cuando cambia el modo grafico , y te pregunta si lo puedes ver correctamente.
creo que se puede programar los modos graficos partiendo del bios y usar drivers propios , estoy en ello , lo que pasa que en internet y en español no pasan del modo 13h.
parece que internet hay algo de TABU sobre la manipulacion de las SVGA ni el propio google se atreve - ¿SVGA? quizas quiso decir pasar del tema -
Para el resto de las preguntas usa dow4gw dos en modo protegido , el resto de tus dudas es facil de encontrar en internet .
crear un S.O desde cero creo que deberias ver algo de linux que muestran el codigo fuente .
Aun asi es una tarea bastante ardua para una sola persona , y el probema no es saber programar ni el tiempo que haga falta para ello , si no la falta de informacion.
ahi van un par de paginas para "empezar" eso si en ingles, no te pierdas por que hay de todo.
si consiges algo no dudes en comunicarlo .
http://textfiles.tqhosting.com/programming/
http://geocities.yahoo.com.br/conexaopcpc/...os/Hardware.txt
saluDoS :hola:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa