EDIT:
Bueno, Eing me ha dejado este mensaje en el perfil, y como mi respuesta es demasiado larga para otro mensaje de perfil he decidido dejarlo aquí para hacerla más accesible. [MENTION=12479]eing[/MENTION], espero que no te moleste.
Iniciado por eing
Cosarara, no crees que en vez de pasar documentación sobre ensamblador, -que las "funciones" varian segun el procesador con el que trabajemos, pero no la lógica programadora (Que es el stack, que son punteros, etc etc)- deberias decirles a troche y moche que aprendan como funciona antes un rom (Partes en las que se divide) y como las usa la empresa desarrolladora del SW?
:P
Podría decir muuchas cosas. Muchas. Pero no tenía demasiado tiempo así que he decidido dejar lo que según mi opinión es el documento más importante al aprender ASM para la GBA: el manual de ARM7TDMI (el procesador de la GBA).
El lenguaje ensamblador tiene algunas cosas que lo hacen especial, y una de ellas es que entre arquitecturas no cambian solo las instrucciones sino también la sintaxis. Si bien hay muchas cosas parecidas entre las diferentes arquitecturas, verás que la gran mayoría de manuales/tutoriales/etc. están enfocados a una arquitectura. Eso debe ser así, por que de no serlo ya no se estaría enseñando ensamblador si no teoría sobre la computación.
La escuela de ASM abierta en WaH en este momento, por ejemplo, enseña MIPS. Estoy de acuerdo con el profesor en que hacerlo así es mucho mejor que no enseñar solo conceptos generales que puedan aplicarse a todas las arquitecturas.
Por lo que hace al ROM. Un ROM no es más que una memoria. Tiene un punto de inicio y un pequeño cabezal, por el sistema de inicio de la GBA, pero a parte de eso no tiene nada más de especial. Su contenido puede tener tanto datos como código ejecutable, pero no tiene porqué estar estructurado de ningún modo especial.
La verdad es que no tengo ningún mapa por lo que hace a cómo estructura sus ROMs nintendo. Lo más lógico sería que los datos estuvieran separados del código en dos secciones definidas (con pocas excepciones), pero nunca lo he comprobado. De todos modos, aunque algo útil, no tiene demasiada relevancia por lo que hace al aprender ASM.
Volviendo al ARM7TDMI Technical Reference Manual. Este documento explica muchas cosas, quizás demasiadas en realidad. Pero también es la fuente más fiable para la mayoría de cosas que dice.
Tiene una introducción donde se explican cosas cómo:
- Cómo se leen las instrucciones de la memoria
- Qué tamaños pueden tener los datos en memoria (también lo explica Cheve aquí: http://wahackforo.com/t-25385/asm-clase-numero-0-comprendiendo-lo-muy-muy-basico)
- Qué es Thumb
- Un resumen sobre las instrucciones más importantes, de ARM y Thumb
Y luego el Modelo del Programador en el que se explican los registros, la endianness (sí, los offsets (y todo en realidad) van invertidos!), todo de cosas realmente esenciales a la hora de escribir código en ASM y otras que no tanto pero que de todos modos existen y siempre está bien conocer.
Poco a poco, el manual explica cosas cada vez más complicadas y a la vez menos relevantes (oh, sí, los transistores y señales del procesador!), de modo que cada uno puede para cuando quiera.
Concluyendo. Sí, podría haber pasado algo más "práctico". Que explicada cosas como el stack y cómo usar un ensamblador. Pero el chico quiere convertirse en un maestro del ASM, y para eso (si quiere aplicarlo a la GBA) necesita ese manual.
Btw, http://wahackforo.com/w-ASM