Publicado hace 7 años por meneador_cuadyuvador a spectrum.ieee.org

Tres juegos que hacen mucho más llevadero el aprendizaje de cualquiera de los lenguajes ensambladores, llegando a transformar la tediosa tarea del aprendizaje en algo divertido. No te engañes, ninguno de estos programas implica escribir en lenguajes ensambladores para hardware real. Todos usan sistemas virtuales con conjuntos de instrucciones mínimos. Sin embargo, capturan la esencia de la codificación de los lenguajes ensambladores, con comportamientos complejos y comandos simples.

Comentarios

D

mv $1 $discarded

D

#3 La dificultad a la que yo me refiero es la de encontrar la especificación para programar en lenguaje máquina incluso para dispositivos y sistemas operativos que sí están diseñados para dejarse programar en lenguaje máquina. No lo he intentado, pero no me quiero ni imaginar el infierno que tiene que ser el intentar encontrar la especificación de Windows 10 para programar en él en lenguaje máquina. Ni siquiera me atrevo a imaginar si en Amazon puede haber algún manual técnico que entre en detalle en cómo programar en lenguaje máquina para Windows 10.

D

Lo menos difícil del lenguaje ensamblador es el lenguaje ensamblador. Lo más difícil es que programas para un sistema operativo en particular, lo cual te obliga a tener en cuenta cosas (miles de cosas) a la hora de escribir el programa que tienen que ver con el sistema operativo sobre las que en muchísimos casos te resulta casi imposible encontrar información (si es que la hay). Y no solo es el sistema operativo, también tienes el hardware; en muchos casos existen barreras casi insalvables para encontrar la información que te indique a través de qué partes de la memoria te intercomunicas con y programas los periféricos, y cuál es el lenguaje máquina propio de los periféricos en sí mismos, que en muchos casos ni siquiera está documentado porque el fabricante lo mantiene propietario. Puedes saberte al dedillo el lenguaje ensamblador, que si ni el creador del sistema operativo ni los creadores de los periféricos te documentan sus respectivas especificaciones, saberte al dedillo el lenguaje ensamblador no te sirve de nada.

meneador_cuadyuvador

#2 No es verdad, toda la información que necesitas te la proporcionan los fabricantes. Si no fuese así, ira en contra de su diseño.
La memoria que tienes que usar, es la que te proporciona el sistema operativo a través de sus funciones. O si quieres más usar transferencia de alta velocidad con DMA, el sistema operativo te proporciona todo lo que necesites...etc
Los dispositivos periféricos nos son programables, por eso no hay especificaciones, tú no puedes programarles porque ya viene programados de fabrica, el famoso firmware. Los periféricos normalmente exponen un API, una veces en forma de protocolo y otras veces en forma de comandos. Y esa es toda la especificación que necesitas saber. Si no encuentras información sobre algún dispositivo, eso quiere decir que no está diseñado para ese fin.
Y sí capto la esencia de lo que quieres decir. Sólo el lenguaje no sirve de nada, ¿cómo programar el software de un radar si no sabemos nada del procesado de señales, o cómo programar software de satélites si no sabes nada de telecomunicaciones?
Pues ahí tienes la respuesta. El ensamblador solo es una herramienta, que sin un cerebro preparado, no es más útil que un juego.