La Torre de Babel- parte II
Otros elementos a considerar y no morir en el intento.
En un articulo posterior: La Torre de Babel, se mencionó que existían distintos tipos de ensamblador según el procesador para el que programaría; en este artículo ahora se mencionaran otros aspectos que también influyen en la programación en ensamblador.
1.- La Arquitectura.
Este punto se encuentra íntimamente ligado con lo expuesto en el artículo anterior ya qua cada fabricante al momento de asignar sus códigos de instrucción también toman en cuenta las distribución de la memoria y el CPU. Por lo que existen 3 tipos principales de arquitecturas:
I- Harvard: donde existen dos tipos de memorias, una es para los datos y la otra para las instrucciones.
II- Von Neumann: En esta solo existe una única memoria, los datos y las instrucciones se almacenan en una sola memoria.
III- Harvard modificada: Combina las ventajas existentes de las arquitecturas anteriores.
2.- El Sistema Operativo.
Los sistemas operativos modernos nos permiten delegar tareas como la impresión en pantalla o la lectura de los datos introducidos por teclado, de tal forma que le pedimos que realice ciertas acciones usando las interrupciones de software, pero cada sistema operativo emplea números de interrupción de software y valores de uso distintos; debido a esto no es lo mismo la programación en ensamblador en el sistema operativo Windows, que en GNU/Linux o en Mac Os X.
3.- El Ensamblador.
Por curios que eso suene, ensamblador no solo es el nombre del lenguaje, sino que también es el nombre del programa que traduce el codigo ensamblador a lenguaje máquina, el cual es un conjunto de unos y ceros. Existen distintos fabricantes de software los más conocidos son MASM, TASM, GAS y NASM, y cada uno de ellos estructura los programas de distinta forma.
4.- La Sintaxis.
Por ultimo, pero no menos importante hay que mencionar que existen dos sintaxis principales en el lenguaje ensamblador: AT&T e Intel.
Por ejemplo, si yo quisiera hacer una suma entre la “variable” EAX y un 2 para posteriormente almacenar el resultado en EAX en la sintaxis Intel se escribiría de la siguiente forma: add eax, 2 mientras que AT&T seria así: addl $2, %eax.
Como podemos apreciar, la combinación de todos estos factores provoca que en realidad existan miles de lenguajes ensamblador, podemos tener entonces un ensamblador x86 en Windows con TASM y sintaxis Intel como ensamblador x86 en GNU/Linux con NASM y sintaxis Intel y ambos serian ¡COMPLETAMENTE DIFERENTES!
Por lo que la próxima vez, que busques ejemplos de codigo en internet; no olvides especificar todos estos elementos para obtener codigo, que sea compatible con lo que te encuentras usando y evitar confundirte, al creer que el ensamblador es similar a los lenguajes de alto nivel y que el codigo es el mismo y funciona en todas partes.
Si ha disfrutado de este artículo y siente que ha aprendido algo valioso, por favor compártalo.