• Viernes 26 de Abril de 2024, 04:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - CodigoDavid

Páginas: [1]
1
C/C++ / Dimensiones En Tiempo De Ejecucion¿?
« en: Lunes 4 de Julio de 2005, 08:14 »
No hay alguna manera de decidir el numero de dimensiones de una matriz dinamica en tiempo de ejecucion? esto es, tranquilamente se puede hacer esto en C++:

void AsignarMemoria(int *&destino, int numElementos)
{
   destino = new[numElementos];
}


pero, claro, hay alguna manera de averiguar el numero de dimensiones dentro de una funcion? el numero de elementos no, reitero que me refiero a las DIMENSIONES, esto es, la diferente cantidad de corchetes, pero no solo eso, ¿como le asigno las dimensiones si tan solo son corchetes?(creo que no se puede)
y entonces, y por eso he pedido que entre JuanK, ¿la unica alternativa es hacerlo del modo "cochino"?(JuanK lo entendera, lo de "cochino".....)¿?help meeeeeee!!!!!!!!!

2
ASM (Ensamblador) / Programar La Gpu
« en: Lunes 27 de Junio de 2005, 15:53 »
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

Páginas: [1]