La Torre de Babel- parte II

Josué Acevedo Maldonado
Nabucodonosor Editorial
3 min readDec 21, 2019

Otros elementos a considerar y no morir en el intento.

Photo by Adi Goldstein on Unsplash

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.

Arquitectura Harvard.

II- Von Neumann: En esta solo existe una única memoria, los datos y las instrucciones se almacenan en una sola memoria.

Arquitectura Von Neumann.

III- Harvard modificada: Combina las ventajas existentes de las arquitecturas anteriores.

Arquitectura Harvard modificada.

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.

Josue Acevedo Maldonado es ingeniero de software, trabaja actualmente como consultor.

Conectarse en LinkedIn.

¡Gracias por ser parte de la comunidad!
Puede encontrar contenido relacionado en el canal de YouTube, Twitter, Twitch, Spotify, etc, ademas del libro Ensamblador X86.

Si ha disfrutado de este artículo y siente que ha aprendido algo valioso, por favor compártalo.

¡Gracias por leer!

--

--

Josué Acevedo Maldonado
Nabucodonosor Editorial

Amante de la tecnologia y con pasion en resolver problemas interesantes, consultor, y creador del canal de youtube NEOMATRIX. https://linktr.ee/neomatrix