Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sobre Asm

Iniciado por Sacrifai, 07 de Septiembre de 2004, 10:24:31 PM

« anterior - próximo »

Sacrifai

  (uoh)  (uoh)  Bueno resulta que hoy he acabado de leerme el tutorial de DX9 (casi 500 paginas en ingles  (ole) ) y me dije ¿que leo ahora? Entoces pense en ensamblador. Por eso acudo a vuestra gran sabiduria para que recomendeis un tutorial, libro o web (preferible libro) sobre asm. Y tambien me gustaria saber si es util en esto de los videojuegos y tal. Gracias  ;) .

< OFF-TOPIC>
Hoy he acabado mi primer videojuego en C++ y SDL, ¡aleluya!

AgeR

 Libro : "Lenguaje Ensamblador de los 80x86" de Jon Beltrán de Heredia (te suena?). Es el único libro que me he leido yo de ensamblador y me resultó muy útil en su tiempo, aunque llevo la tira de años sin hacer nada en asm.

Actualmente creo que para programación de videojuegos no tiene demasiado sentido usarlo, la verdad. Es cierto que antes se sacaba mucho más rendimiento con unas buenas rutinas en ensamblador, pero ahora al menos a mi no me vale la pena.


A qué esperas para enseñarnoslo????  (uoh)  

Lessman


[EX3]

 Pues yo creo ke si se sigue utilizando en juegos (eso creo), sobre todo para calculos y algunas historias ke requieran velocidad (IA?  :blink: ), yo si puediera lo utlizaria (El **** VB no acepta ASM  <_< ) Antiguamente se ke usaba mucho para el tema de programar rutinas graficas rapidas y demas historias, tengo por ahi unos *.bas y unos *.asm del QBasic para poder dibujar sprites y poligonos en 3D y mil historias mas.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

AgeR

 
Aquí podéis descargaros un cutre-buscaminas que hice hace muuuuuuuucho tiempo en Pascal, con rutinas gráficas en asm (del 386 XD). Los gráficos están comprimidos en el propio ejecutable. Ocupa unos 25k en total.


Pero vamos, volviendo al tema, el ensamblador hoy en día se usa más bien poco. Creo recordar que el chaval que nos dió una charla en la uji que había trabajado en Pyro dijo que habían utilizado asm en un par de rutinas críticas, pero el resto era C++ puro y duro.
Si es por aprender, adelante, pero si es por hacer juegos mejores o más rápidos olvídate.  ;)  

Pogacha

 Directamente ya no se usa asm.
Fijate codigo de juegos del 2000 en adelante y veras.
Era util para render por software, hoy ya no se usa. Ademas esta complicado y el rendimiento que lograras no sera mucho mas. Puede ser util quizas para los Pixel Shaders, pero todos tratan de escaparse, por eso sacan lenguajes de alto nivel para programar los shaders y realmente si no sos un buen programador en asm podes hacer bugs que solo en el fin de los tiempos podras encontrar.

Edit : PD: queremos ver el juego!!!

Helius

 Si programas para PC no te será muy útil salvo para tres o cuatro rutinas que tengan que aprovechar alguna extensión especial del procesador o algo así...

Sin embargo para consolas (en especial Game Boy y aquellas con ARM) te será muy útil ya que en las consolas estás totalmente expuesto al hardware y tienes mucha libertad con él, gran parte de las rutinas puedes acelerarlas usando ensamblador. Aunque el ensamblador de las consolas suele ser distinto al del PC (depende del micro) se parecen mucho todos entre sí.

Te recomiendo aprenderlo ya que es muy útil para un montón de cosas más, para depurar viene que ni pintado, y bueno si algún dia te encuentras con un programa útil que no tienes su crack siempre puedes intentar crackearlo o crear un serial válido, suele ser muy fácil si sabes ensamblador, jejejeje  :D

Otra cosa, si quieres programar algún dispositvo hardware o alguna máquina, robot, etc. lo más seguro es que tengas que usar ensmblador, suele ser muy divertido crear cacharritos tipo máquina expendedora, al menos en mi opinión :)
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

Zaelsius

 Hoy en día sólo se programa en lenguaje ensamblador en rutinas críticas de algunos componentes middleware, como pudiesen ser DirectX, OpenGL, o los motores software para móviles.

Sacrifai, si algun dia haces la carrera deberias poder aprender ensamblador(con fundamento) en alguna de las asignaturas obligatorias sobre arquitectura de computadores. Te recomiendo que pases de aprender ASM(a no ser que tengas un objetivo concreto), y hagas otro pequeño juego o aplicación, que será lo que realmente te haga ver que estás progresando.

El ASM no es para Genins XDD(es coña).

Edit: el middleware cubre muchas cosas, no sólo motores 3d o api's : P

Pogacha

 Tiene razón en lo que dijo, yo unicamente hablaba de PC y programación de juegos.

nsL

 Segun nos comento el director de Revistronic en una charla de la uni, el asm ya no se usaba pa juegos salvo para la opcion de software como ya dijisteis por ahi....

Por otro lado, lei en la Micromania, que el tio que hace los *****Tycoon (todas las variantes) hacia los juegos en asm a pelo, salvo algunas cosas para adaptarlo a windows y tal ( o aglo asi, lo digo de memoria)
Yo no muero hasta la muerte -

Helius

 
Cita de: "nsL"Por otro lado, lei en la Micromania, que el tio que hace los *****Tycoon (todas las variantes) hacia los juegos en asm a pelo, salvo algunas cosas para adaptarlo a windows y tal ( o aglo asi, lo digo de memoria)
Eso es totalmente cierto, se llama Chris Sawyer y en mi opinión es un poco masoquista:

http://www.chrissawyer.com/faq3.htm

De ahí saco lo siguiente:

CitarWhat language was RollerCoaster Tycoon programmed in?
It's 99% written in x86 assembler/machine code (yes, really!), with a small amount of C code used to interface to MS Windows and DirectX.

Tampoco hace falta llegar a esos extremos...

Edit: Por cierto, está haciendo otro con el mismo motor 99% ensamblador: http://www.gamespot.com/news/2004/04/02/ne...ws_6092788.html
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

Lessman


Mac

 Tal vez sea masoca el amigo Chris, pero desde luego las joyas con las que nos deleita son autenticas obras de arte. Si de mi dependiera, al lado de la palabra ADICCION en el diccionario pondria 'Ver Transport Tycoon'. Y no hablemos de Roller Coaster Tycoon. Todavia no entiendo como pudo programar las rutinas de fisica y plasmarlas en 2d todo a base de sprites. Tambien se explicaria como se puede tener tantas entidades activas en el juego (tanto en el Transport como en el Roller), con cientos de vehiculos / personas y todas con sus curiosos datos actualizados constantemente.

Pero aprender a programar en ASM hoy en dia no sirve de mucho. Como dicen todos, dedicate a hacer otro juego y perfecciona el C++, que siempre se puede aprender algo mas.

PD: Locomotion, el nuevo juego de Chris Sawyer, casualmente sale mañana dia 8  (genial)  
a href='http://www.mp-labs.com' target='_blank'>www.mp-labs.com
.....
Usar pollo de goma con polea en cacerola; Usar buen vino en cacerola; Usar camiseta 100 % algodón en fuego al rojo vivo; Usar caramelos de menta en cacerola .... FLOASSSHHHH!!!!

seryu

 para el motor 3d que utilizo, basado en opengl, tengo en asm las funciones de matematicasde vectores y matrices, para aprovechar las 3dnow sse2, usando trucos humanos que un compilador no te hace de forma automatica.

asi qe supongo, qe malo malo, no va a ser.

xqe aunqe no programes una sola miserable linea de asm, aprenderas MUCHO de como funciona una maqina, a entender los fallos de compilacion, y a programar las cosas de forma mas optima (aunqe ahora con las clases a uno se la suda qe su octree haga 4 sentencias qe 2, penoso)

Astharoth

 
Hola.

- Hoy en dia para lo que es programar programar, apenas si se usa (salvo excepciones como algunas consolas en las cuales
 merece la pena)
- Lo que se usa en PC es en casos como comenta seryu, alguna rutina conocida que sabemos consume tiempo de ejecucion  
 (generalmente hoy en dia calculos matematicos) y que podemos "apretar" usando instrucciones SIMD (SSE,SSE2,3DNow,etc)
 ya que esto de entrada no lo hace el compilador (Bueno, VectorC y el de Intel hacen algo, pero el ser humano siempre es
 mejor para evaluar un caso particular y optimizarlo)
- La propia D3DX segun el procesador usa unas rutinas de calculo u otras (optimizadas con los metodos descritos en el punto
 superior)
- El conocimiento de ensamblador te permite comprender en que se traduce lo que uno escribe en C/C++, que es rapido y que
 no.
- El conocimiento de ensamblador te ayudara a comprender como funciona realmente la maquina, asi sabes por ejemplo como
 implementa cosas el sistema operativo.
- El conocimiento de ensamblador te ayudara a depurar tu codigo, no solo por casques en los cuales sea el compilador el que
 haya metido la pata (en mi vida he visto dos de esos, asi que son pocos) sino porque cuando en tu ejecutable de release en el
 pc de otro colega de "excepcion en 0x1003847" sabras interpretar esa direccion, el callstack, los bytes en cs:eip y localizar
 rapidamente el punto de casque y la razon en tu exe con esa sola informacion (esto profesionalmente lo he tenido que hacer a
 menudo ya que no siempre hay logs, ni estas delante de la maquina, ni la maquina tiene herramientas de desarrollo ni
 consienten que se les instale)

Se puede vivir sin saber ensamblador, pero los que sabemos ensamblador lo tenemos mas facil de cara a algunas tareas.

¿Mi consejo?

Dedicale un poco de tiempo (una introductoria, registros, como organiza la pila,etc) y desensambla (si usas VC++ opcion de "view dissasembly" en el depurador) algo de codigo tuyo para que veas como lo construye. Instructivo es.

Un Saludo.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.