Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Las Cuevas de 64 Bits

–Los tesoros están en lo profundo–

Hace poco a un guionista de TV se le dio la tarea de crear una historia ambientada a inicios de los 80 y buscó equivalentes de cosas actuales. Cuando le preguntó a un ayudante sobre como eran las computadoras que usaban los jóvenes promedio de esa época el ayudante le respondió:

-En esa época los jóvenes promedio no usaban computadoras.

Para alguien nacido en el siglo XXI y que ha crecido con una computadora siempre cerca esto puede parecer sorprendente. Pero es más sorprendente ver como siempre ha habido una división entre quienen tienen que interactuar con las computadoras por motivos de trabajo o sociales y aquellos que les interesan las computadoras por ninguna otra razón que porque les gustan en si mismas. O al menos que les gusten lo suficiente para dedicar tiempo a estas aunque puedan ganar más dinero con menos esfuerzo en otras actividades. En lo personal me gusta comparar a los programadores con los antiguos vaqueros. Aquellos hombres de sombrero guiaban vacas de ganaderos poderosos de un lado a otro mientras que se enfrentaban a todo tipo de privaciones y amenazas. Hoy las computadoras y la información obedecen los comandos tecleados por los programadores como las vacas obedecen a los gritos de los vaqueros. Y al igual que los vaqueros, a los programadores es cada vez mas raro topárselos por la calle. Los programadores interesados en temas como el lenguaje máquina cada vez se alejan a territorios más distantes. De manera metafórica me gusta clasificar estos territorios del espacio-tiempo como:

Las Planicies de 8 Bits.- En aquellos años la única manera de programar algo decente era en ensamblador. Por lo que cualquiera que le interesara la programación estaba obligado a trabajar lo más cercano a la máquina que fuera posible.

El Desierto de 16 bits.- Aquí ya habia manera de vivir de las computadoras sin necesidad del código máquina. Pero quienes pudieran dominarlo tendrian una ventaja enorme sobre los demás. Sobre todo en ambientes con hardware limitado como las consolas de juegos o los microcontroladores.

El Abismo de 32 Bits.- El lugar donde muchos programadores se perdieron o se rindieron cuando vieron que podian vivir de las computadoras sin necesidad de conocerlas tan a fondo como los programadores de antes. Al ya no haber necesidad del lenguaje máquina para la inmensa mayoria de los profesionales la programación en ASM cayó en un casi completo abandono. Pero una pequeña minoria decidió seguir adelante.. En las profundidades de ese abismo hay cosas valiosas al alcance de pocos. Por ejemplo la seguridad informática y computación de muy alto desempeño todavia dependen del ASM.

Me gusta llamarle abismo porque muchos programadores de otras épocas cayeron ahí y nunca salieron. Hay un episodio completo de Modo Protegido dedicado a este tema.

Las Cuevas de 64 Bits.– En el fondo del Abismo de 32 Bits se abren las Cuevas de 64 Bits. Un lugar del que se habla de su existencia pero muy pocos lo visitan. Para muchos 64 bits no es mas que una checkbox en una instalación de un programa o un ajuste de configuración en un IDE. Es muy raro que alguien considere siquiera la existencia de variables de 64 bits. Pero para los habitantes de las Cuevas de 64 Bits todo es diferente. Desde los registros de CPU que se manejan completamente distinto que en otros tiempos hasta el sistema de llamada a función que a primera vista parece estar mal hecho a propósito. Para complicar las cosas todavia más, el sistema operativo hizo un intento de ocultar este cambio hasta donde pudo. Por lo que hay muchas cosas que se llaman igual que antes pero tienen cambios significativos.

Ahora hay muchos nombres vestigiales. Pero el problema de los nombres vestigiales en Windows no es nuevo. En el sistema de mensajes que comunica las ventanas con los procesos hay dos variables llamadas wparam y lparam. EStos nombres vienen de la época de 16 bits. La variable wparam era de 16 bits (word) y lparam de 32 (long) como los prefijos de notación hUngara ‘w’ y ‘l’ sugieren. En la era de 32 bits ambas variables siguieron llamándose igual aunque ahora ambas eran de 32 bits. Y seguro no adivinan qué pasó en la era de 64 bits. A es agréguenle que el sistema de paso de parámetros es diferente. Algo similar ocurrió con las variables de puntero largo con prefijo ‘lp’ que ahora se manejan como punteros sencillos. Olvidando por completo que fueron creadas en tiempos del ‘segmento:offset’. Si entienden lo que es segmento:offset probablemente ya son abuelos o se graduaron recientemente de ingenieria en computación en alguna universidad de latinoamérica. Podria continuar. Pero para eso necesitaria mucho espacio. Pero no puedo dejar pasar que bibliotecas completas ahora son de 64 bits a pesar de conservar sus nombres de 32 bits. Como es el caso de KERNEL32.DLL.

Tal vez la razón sea porque desde la era de los 32 bits hemos estado sobre capas y capas de overhead. Bibliotecas que llaman a otras bibliotecas que llaman a otras bibliotecas.. Casi cada semana sale un nuevo framework que parece que nada más beneficia a quienes cobran por dar cursos online a profesionales que tienen más dinero que confianza en sus habilidades. Lo que nos lleva a la pregunta: ¿Por qué alguien entraria a las cuevas de 64 Bits?

Pues porque en esas profundidades es donde se encuentra la ventaja. Como ha sido desde tiempos de los 8 y 16 bits. Pero hay algo que no pasaba en la era de 32 bits: Quien entiende código máquina de 64 bits puede moverse en cualquier nivel de abstracción. Pero sobre todo, porque muchos adelantos que parecen surgir de la nada tienen su origen en lugares como las Cuevas de 64 Bits. Pero en mi caso particular, lo hago para que este sitio vuelva a escribirse sobre programación en ensamblador.

Y también por otra cosa. Porque en los últimos años he tenido la sensación de que como personaje de internet estoy desapareciendo. Quiero escribir o grabar sobre este tema pero no encuentro un modo de explicarlo. A pesar de que la ficción está llena de muy buenos ejemplos. Y ahcer una campaña (término de videojuego) sobre ASM de 64 bits parece una buena oportunidad para que ese personaje creado en una página de internet sobre programación no desaparezca por completo. Y lo peor. Esa desaparición puede alcanzar incluso a aquellos personajes que se consideran a si mismos reales. ¿O acaso estamos seguros de que somos reales y no personajes ficticios? Creo que no debí de escribir esta entrada en mi actual estado.

May 30, 2021 Posted by | Uncategorized | Deja un comentario