Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Entre gitanos no se leen las manos

–La Pesadilla de la Notacion Hungara–

Como dije desde las primeras entradas, ya hay demasiado material en la internet sobre el ensamblador de l6 bits. Y para quien tiene dinero y paciencia, hay muchos libros que hablan sobre el tema. Lo que me interesa en este blog es dar a conocer la programación en Ensamblador mas avanzada que sea posible. Aún recuerdo que en los primeros años de programador tenía la falsa idea de que si quería programar para Windows tendría que rebajarme a usar herramientas lamers como todas las que tienen el prefijo visual algo. Estuve a punto de renunciar a la programación de computadoras personales en ese entonces porque consideraba que el Windows era un estorbo. Lo único bueno de eso fue que aprendí mucho sobre el funcionamiento y construcción de un sistema operativo.

Sin embargo, estaba en un error. Pero no fue hasta que averigué como programar en esta plataforma completamente en ensamblador que vi que en realidad, el Windows tiene un sistema de manejo de la memoria muy óptimo. El problema es que la mayoría de las aplicaciones para este sistema están tan mal programadas que consumen una enorme cantidad de recursos. Me pregunto donde estaría hoy de haberlo sabido en ese entonces.

De acuerdo, luego de varias peleas por aprender a programar para Windows en Ensamblador, me topé con el primero de los cocos, una cosa horrible y deforme llamada Notación Húngara. Esta aberración de la estética fue parida por uno de los mas importantes programadores al servicio de Micro$oft: Charles Shimonyi. En cuyo currículum puede contarse su participación en el bien conocido Microsoft Office y también su reciente incursión como turista espacial.

En pocas palabras, la dichosa notación Húngara consiste en deformar el nombre de una variable con una mezcla de consonantes mayúsculas y minúsculas y cambiarle el nombre a los tipos de datos con el supuesto propósito de hacer el código mas entendible. Esto podría ser cierto entre los programadores de ‘c’, pues este lenguaje presenta una verificación de tipos de datos muy rígida. Sin embargo, en ensamblador solo es importante el ancho en bits de un dato y no su clase. Al ensamblador no sabe ni le interesa si lo que uno pone en una celda de un byte es una letra, un número con signo o un entero natural. La peor parte de la notación húngara en mi opinión es intentar cambiarle el nombre a los tipos de datos básicos valiéndose de las macros. Mas adelante hablaré sobre las macros, por ahora solo tienen que saber que confunden a los principiantes ingenuos que se les acercan.

He aquí algunos de los mas comunes y deformes de estos ejemplares y un intento por traducirlos:

szName .-Una variable que almacena la posición de una cadena ascii-z que es el nombre de algo. El sz probablemente es abreviatura de ‘string zero’

lpfnWndProc -La posición de una rutina llamada por el sistema. Lpfn significa ‘long pointer to function’ Sin embargo, los ‘punteros largos’ son cosa de los antiguos. Todas las posiciones dentro de un sistema de 32 bits son lineales.

El par wParam y lParam.- Dos enteros usados como parámetros para pasarle mensajes al sistema. Lo mas peligroso de estos nombres es que ambos parámetros son de 32 bits. El prefijo w en wParam sugiere que este dato es de 16 bits. Una potencial trampa para los principiantes.

El cbSize.- Tamaño de una estructura contada en bytes. Esto es otra trampa para los programadores de ensamblador. Pues casi siempre es necesario desensamblar un código funcional para dar con este número.

El hInstance, hWnd.- Todos los símbolos que comienzan con una ‘h’ son ‘handlers’ de alguna entidad de sistema. Un ‘handle’ (traducido al español como picaporte o manija) es un número que nos da acceso a algo. Puede ser un archivo, una ventana, un segmento de memoria, un dispositivo de entrada/salida, etc.

(*Advertencia* La notación húngara es algo tan horroroso que la mayoría de los correctores ortográficos la detectan como un error de la naturaleza)

Debido a lo mencionado en la advertencia, este procesador de textos no me deje seguir poniendo ejemplos de esta aberración de los códigos. Asi que si Charles Shimonyi lee algún día este blog. Tengo que decirle que es mucho mas sencillo entender las variables directamente en código máquina que entender su horrorosa notación húngara.

En resumen, todos estos monstruitos se resumen a enteros de 32 bits. Alguna vez se trata de un valor en memoria y otras de una posición de esta. Pero siempre se trata de enteros de 32 bits. Otro problema son las estructuras de datos con anidación recursiva. Pero al final todo se trata de simples enteros de 32 bits. Para quien sepa traducir la notación húngara, podrá obtener información adicional sobre el contenido de las variables. Pero al final, es el editor Hexadecimal quien tiene la última palabra.

Anuncios

enero 12, 2009 - Posted by | Uncategorized | , , , ,

1 comentario »

  1. Me creerás si te digo que llegué a tu blog sólo por escribir en Google “renunciar a la programación de computadoras”.

    Sobre la notación húngara, siempre me pareció una cosa de poca belleza.

    Sobre ASM, me gustaba programar el ratoncito. Pero para aplicaciones más serias, no logré captarle el encanto que posee.

    Simpático blog, aunque la cabecera es horrible.

    Buen día.

    Comentario por jl | junio 5, 2010 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: