2 minute read

2.1. Entorno de trabajo

Se denominan lenguajes de bajo nivel porque dependen de la arquitectura del procesador en el que queremos ejecutar el programa y porque no disponen de sentencias con una estructura lógica que faciliten la programación y la comprensión del código para el programador, sino que están formados por una lista de instrucciones específicas de una arquitectura.

Podemos distinguir entre dos lenguajes:

Advertisement

a) Lenguaje de máquina. Lenguaje que puede interpretar y ejecutar un procesador determinado. Este lenguaje está formado por instrucciones codificadas en binario (0 y 1). Es generado por un compilador a partir de las especificaciones de otro lenguaje simbólico o de alto nivel. Es muy difícil de entender para el programador y sería muy fácil cometer errores si se tuviera que codificar.

b) Lenguaje de ensamblador. Lenguaje simbólico que se ha definido para que se puedan escribir programas con una sintaxis próxima al lenguaje de máquina, pero sin tener que escribir el código en binario, sino utilizando una serie de mnemónicos más fáciles de entender para el programador. Para ejecutar estos programas también es necesario un proceso de traducción, generalmente denominado ensamblaje, pero más sencillo que en los lenguajes de alto nivel.

2) Lenguajes de alto nivel. Los lenguajes de alto nivel no tienen relación directa con un lenguaje de máquina concreto, no dependen de la arquitectura del procesador en el que se ejecutarán y disponen de sentencias con una estructura lógica que facilitan la programación y la comprensión del código para el programador; las instrucciones habitualmente son palabras extraídas de un lenguaje natural, generalmente el inglés, para que el programador las pueda entender mejor. Para poder ejecutar programas escritos en estos lenguajes, es necesario un proceso previo de compilación para pasar de lenguaje de alto nivel a lenguaje de máquina; el código generado en este proceso dependerá de la arquitectura del procesador en el que se ejecutará.

2.1. Entorno de trabajo

El entorno de trabajo que utilizaremos para desarrollar los problemas y las prácticas de programación será un PC basado en procesadores x86-64 (Intel64 o AMD64) sobre el cual se ejecutará un sistema operativo Linux de 64 bits.

El entorno de trabajo se podrá ejecutar de forma nativa sobre un PC con un procesador con arquitectura x86-64, con sistema operativo Linux de 64 bits, o utilizando algún software de virtualización que permita ejecutar un sistema operativo Linux de 64 bits.

Los lenguajes de programación que utilizaremos para escribir el código fuente de los problemas y de las prácticas de programación de la asignatura serán: un lenguaje de alto nivel, el lenguaje C estándar, para diseñar el programa principal y las operaciones de E/S y un lenguaje de bajo nivel, el lenguaje ensamblador x86-64, para implementar funciones concretas y ver cómo trabaja esta arquitectura a bajo nivel.

Hay diferentes sintaxis de lenguaje ensamblador x86-64; utilizaremos la sintaxis NASM (Netwide Assembler), basada en la sintaxis Intel.

En el espacio de recursos del aula podéis encontrar documentación sobre la instalación y utilización de las herramientas necesarias para editar, compilar o ensamblar, enlazar, y depurar o ejecutar los problemas y las prácticas que se plantearán en esta asignatura, tanto para trabajar de forma nativa como desde un entorno de virtualización.

Máquina virtual En el espacio de recursos de la asignatura os podéis descargar una imagen de una máquina virtual que ya tiene instalado un Linux de 64 bits y todas las herramientas del entorno de trabajo. Esta máquina virtual se podrá ejecutar en un sistema operativo Linux, o Windows; para poder ejecutarla, se debe instalar el software de virtualización.

This article is from: