Tus herramientas
Este libro enseña lenguaje ensamblador para procesadores x86 y el sistema operativo GNU/Linux, por lo que todos los ejemplos usaran el conjunto de herramientas estándar GCC. Si no estas familiarizado con GNU/Linux y este conjunto de herramientas, serán descritas brevemente a continuación. Si eres nuevo en Linux, deberías ver la guía disponible en
Linux es el nombre del kernel, el cual es el núcleo de un sistema operativo, mantiene el rastro de todo. El kernel es, como lo describe el autor, tanto una barrera como una puerta. Como puerta permite a los programas acceder al hardware de una forma uniforme u homogénea. Sin el kernel, deberías escribir los programas para que trate directamente con cada modelo de dispositivo diseñado. El kernel maneja todos las interacciones especificas del dispositivo para que no tengas hacerlo todo tu mismo. También maneja el acceso a los archivo e interacciones entre procesos. Pro ejemplo, cuando se presiona una tecla, esta señal pasa a través de varios programas antes de que se vea en el editor. Primero el kernel maneja el hardware, por lo cual es el primer en recibir la señal. El teclado lo manda en código al kernel, este lo convierte en letras, números o símbolos. Si se esta usando un sistema de ventanas, como Windows, este sistema lee la tecla presionada desde el kernel y la entrega a cualquier programa que tenga el foco del display del usuario.
Ejemplo 1-1. Manera en que se procesan las señales del teclado
Teclado -> kernel -> sistema de pantalla -> programa de aplicación
El kernel también controla el flujo de información entre programas. Este funciona como una puerta para el mundo que tiene al rededor. Cada vez que se mueven datos entre procesos, el kernel controla este sistema de mensaje. En el ejemplo anterior, el kernel esta involucrado entre la comunicación de la señal de la tecla presionada y la aplicación del programa.
Como una barrera, el kernel previene que los programas 'accidentalmente' sobre-escriban la información y archivos de otros y el acceso a los dispositivos no autorizados. Limita la cantidad de daño que los programas, mal escritos arruinen otros programas.
En nuestro caso el kernel es Linux, el kernel por si solo no hace nada, no puedes bootear -iniciar- una computadora solamente con el kernel, por que este necesita de aplicaciones de usuarios para funcionar como un sistema operativo completo. El kernel solamente es una capa de abstracción del hardware, o dicho de otra forma, un entorno para simplificar el acceso al hardware.
Para la mayor parte, el libro va a usar el lenguaje ensamblador de bajo nivel. Hay esencialmente tres tipos de lenguajes:
•Lenguaje maquina:
Los que la computadora realmente lee y trabaja. Secuencia de números binarios.
•Lenguaje ensamblador:
Lo mismo que el lenguaje maquina, excepto que los comandos de números fueron reemplazados por secuencias de letras.
•Lenguajes de alto nivel:
Estos lenguajes hacen mas sencilla la programación. Ensamblador, en cambio, requiere que se trabaje con la maquina misma. Permite describir el programa en un lenguaje mas natural. Un solo comando de un lenguaje de alto nivel equivale a varios comandos de ensamblador.
Por este libro se va a enseñar el lenguaje ensamblador, aunque también va a cubrir un poco del los lenguajes de alto nivel. Con suerte, al aprender ensamblador, comprenderás como se programa una computadora y como estas trabajan.