PDF de programación - Tema 5: Lenguajes del computador: alto nivel, ensamblador y máquina

Imágen de pdf Tema 5: Lenguajes del computador: alto nivel, ensamblador y máquina

Tema 5: Lenguajes del computador: alto nivel, ensamblador y máquinagráfica de visualizaciones

Actualizado el 20 de Mayo del 2018 (Publicado el 7 de Mayo del 2018)
825 visualizaciones desde el 7 de Mayo del 2018
856,8 KB
44 paginas
Creado hace 13a (13/12/2010)
Tema 5:

Lenguajes del computador:

alto nivel, ensamblador y máquina

Departamento de Ingeniería y
Tecnología de Computadores

diciembre de 2010

Índice

Índice

5.1 Introducción

5.1.1 Programas e instrucciones
5.1.2 Codificación de las instrucciones
5.1.3 Tratamiento de las instrucciones
5.1.4 Tipos de instrucciones

5.2 Jerarquía de traducción
5.2.1 Lenguajes de alto nivel
5.2.2 Compiladores y ensambladores
5.2.3 Código objeto
5.2.4 Librerías
5.2.5 Enlazadores y cargadores
5.2.6 Visión global de la jerarquía de traducciones

5.3 Introducción al ISA Intel IA32

5.3.1 Ensamblador del IA32
5.3.2 Operandos de las instrucciones IA32
5.3.3 Repertorio de instrucciones IA32

5.4. Codificación de las instrucciones

5.4.1 Formato y codificación de instrucciones
5.4.2 Ejemplos de codificación en IA32
5.4.3 Reubicación de código
5.4.4 Espacio virtual de direccionamiento

Tema 5: Lenguajes del computador

diciembre de 2010 - 2

Índice

Índice

5.1 Introducción

5.1.1 Programas e instrucciones
5.1.2 Codificación de las instrucciones
5.1.3 Tratamiento de las instrucciones
5.1.4 Tipos de instrucciones

5.2 Jerarquía de traducción
5.2.1 Lenguajes de alto nivel
5.2.2 Compiladores y ensambladores
5.2.3 Código objeto
5.2.4 Librerías
5.2.5 Enlazadores y cargadores
5.2.6 Visión global de la jerarquía de traducciones

5.3 Introducción al ISA Intel IA32

5.3.1 Ensamblador del IA32
5.3.2 Operandos de las instrucciones IA32
5.3.3 Repertorio de instrucciones IA32

5.4. Codificación de las instrucciones

5.4.1 Formato y codificación de instrucciones
5.4.2 Ejemplos de codificación en IA32
5.4.3 Reubicación de código
5.4.4 Espacio virtual de direccionamiento

Tema 5: Lenguajes del computador

diciembre de 2010 - 3

Programas e instrucciones

5.1 Introducción 5.1.1 Programas e instrucciones

• Instrucción ” Conjunto de símbolos que representa

una orden de operación o tratamiento para el
computador.

• Programa ” Conjunto ordenado de instrucciones
que debe ejecutar el computador sobre los datos
para procesarlos y obtener un resultado.

• Las instrucciones se almacenan en memoria
principal en un orden determinado, y se van
ejecutando en secuencia

• La secuencia sólo se rompe por posibles

instrucciones de salto (bucles, condiciones if, saltos
a funciones, etc.)

Tema 5: Lenguajes del computador

diciembre de 2010 - 4

Codificación de las instrucciones

5.1 Introducción 5.1.2 Codificación de las instrucciones

• Cada instrucción indica una acción determinada a

realizar por la CPU. P.e.:
– Traer un dato de memoria a un registro de la CPU (o

viceversa),

– sumar dos registros y colocar el resultado en otro,
– comparar dos registros y, dependiendo del resultado,

saltar a otro lugar del programa o continuar
secuencialmente,

– Etc.

• Como todo en un computador (datos numéricos,
caracteres, imágenes, etc.), las instrucciones en
última instancia se codifican como ristras de bits
– (de longitud fija o variable, dependiendo de la

arquitectura).

Tema 5: Lenguajes del computador

diciembre de 2010 - 5

Codificación de las instrucciones

5.1 Introducción 5.1.2 Codificación de las instrucciones

• Para codificar toda la información necesaria, las instrucciones

se organizan en campos de bits.

• P.e., para una instrucción de suma acumulativa de un registro

sobre otro, el formato podría ser:

Código operación

Registro 1

Registro 2

(6 bits)

(5 bits)

(5 bits)

• La unidad de control (UC) de la CPU analizará e interpretará

los distintos campos para saber:
– La operación que debe llevar a cabo.
– Los operandos de entrada.
– El lugar en el que dejar el resultado.

• En este ejemplo, se permitirían hasta 64 códigos de operación

distintos, y 32 posibles registros fuente/destino.

• Obviamente, distintos tipos de instrucciones (aritmético-

lógicas, movimiento de datos, salto, etc.) utilizarán distintos
formatos (puesto que necesitan codificar información distinta).

Tema 5: Lenguajes del computador

diciembre de 2010 - 6

Tratamiento de las instrucciones

5.1 Introducción 5.1.3 Tratamiento de las instrucciones

• En todo momento, la UC mantiene:

– Contador de programa (PC): contiene la dirección de la

instrucción a ejecutar.

• Tanto para ejecución secuencial (ver dirección de la

instrucción siguiente) como para los saltos (condicionales o
no), su constante actualización corresponde a la UC.

– Registro de instrucción (RI): contiene la instrucción a

ejecutar.

MEMORIA

RAM

INSTRUCCIONES

10100110
11101100

10110000
. . .

DATOS

00101100
11111110

11111110
. . .

Dirección de
instrucción

Instrucción
a ejecutar

Dirección de
datos (L/E)

Lectura de
operandos

Escritura de
resultados

CPU

UNIDAD DE CONTROL

PC

RI

Decodificación de

instrucciones

Señales

de control

0

1

...

0

CAMINO DE DATOS

Operadores

Tema 5: Lenguajes del computador

diciembre de 2010 - 7

Tipos de instrucciones

5.1 Introducción 5.1.4 Tipos de instrucciones

• A mayor número de instrucciones:

– Más complejidad de la UC.
– Mayor número de bits requeridos por el campo código de

operación.

• Dos tendencias a este respecto:

– RISC: pocas instrucciones, sencillas y se ejecutan en pocos

ciclos.

– CISC: muchas instrucciones, complejas y muchos ciclos de reloj.

• Tipos de instrucciones:

– Instrucciones de movimiento de datos:

• A/desde/entre registros CPU/direcciones de memoria.

– Instrucciones aritmético-lógicas.

• Suma, resta, multiplicación, división, and, or, desplazamientos, ...
• Operaciones punto flotante.

– Instrucciones de salto

• Condicionales
• Incondicionales
• Manejo de subrutinas

Tema 5: Lenguajes del computador

diciembre de 2010 - 8

Índice

Índice

5.1 Introducción

5.1.1 Programas e instrucciones
5.1.2 Codificación de las instrucciones
5.1.3 Tratamiento de las instrucciones
5.1.4 Tipos de instrucciones

5.2 Jerarquía de traducción
5.2.1 Lenguajes de alto nivel
5.2.2 Compiladores y ensambladores
5.2.3 Código objeto
5.2.4 Librerías
5.2.5 Enlazadores y cargadores
5.2.6 Visión global de la jerarquía de traducciones

5.3 Introducción al ISA Intel IA32

5.3.1 Ensamblador del IA32
5.3.2 Operandos de las instrucciones IA32
5.3.3 Repertorio de instrucciones IA32

5.4. Codificación de las instrucciones

5.4.1 Formato y codificación de instrucciones
5.4.2 Ejemplos de codificación en IA32
5.4.3 Reubicación de código
5.4.4 Espacio virtual de direccionamiento

Tema 5: Lenguajes del computador

diciembre de 2010 - 9

5.2 Jerarquía de traducción 5.2.1 Lenguajes de alto nivel

Lenguajes de alto nivel

• Las instrucciones que procesa la CPU están almacenadas en

memoria principal en binario (0 y 1):
– Se dice que son instrucciones máquina.
– Programar directamente de esa forma sería posible, pero muy
difícil, propenso a errores y lejos del modo de pensar humano.

• Lenguajes de programación: instrucciones representadas
simbólicamente (mediante palabras, abreviaturas, etc.).
Ejemplo ensamblador Intel-IA32:

“fuente”

00000001 11010000 == add %edx, %eax

“Sumar”

“Cada registro un nombre”

“fuente y destino”

– Problema: el procesador no entiende “add”.
– Solución: usar la máquina para traducir a lenguaje binario

(código máquina): programa traductor.

• Tipos de lenguajes de programación:
– Lenguaje ensamblador (de bajo nivel).
– Lenguaje de alto nivel (LAN): Java, C, C++, etc.

Tema 5: Lenguajes del computador

diciembre de 2010 - 10

5.2 Jerarquía de traducción 5.2.1 Lenguajes de alto nivel

Lenguajes de alto nivel

• Permiten al programador expresar sus programas en un

lenguaje formal, relativamente cercano a su forma de pensar:
– Variables, tipos de datos, funciones/procedimientos, asignación

de variables, condiciones, bucles, etc.

• Multitud de paradigmas (imperativo, orientado a objetos,

funcional, ...) y de lenguajes concretos (C, C++, Java,
Haskell, etc.)

• Ilustraremos nuestros ejemplos con C:

– Alto nivel, pero más cercano a la máquina.
– Lenguaje de programación nativo de Unix/Linux

• Ejemplo:

#include<stdio.h>
int array[10] = {10,9,8,7,6,5,4,3,2,1};
int i = 0;
int main() {

for(i=0;i<10;i++) /* Recalcula array */

array[i] = array[i]*i;

for(i=0;i<10;i++) /* Imprime array */

printf("%d ",array[i]);

printf("\n");

}

Tema 5: Lenguajes del computador

diciembre de 2010 - 11

5.2 Jerarquía de traducción 5.2.1 Lenguajes de alto nivel

Lenguajes de alto nivel

• El programa anterior declara un vector (array) de 10 datos

de tipo entero, y una variable entera (i).

• Después, tiene una función principal (main), que va

recorriendo el array (bucle for).

• En cada paso del bucle se lee una posición del array, se hace

una operación sobre él, y se almacena el resultado en la
misma posición (array[i] = array[i]*i;).

• Finalmente, se vuelve a recorrer el vector para imprimir sus

contenidos (función printf, de la librería stdio.h)

#include<stdio.h>
int array[10] = {10,9,8,7,6,5,4,3,2,1};
int i = 0;
int main() {

for(i=0;i<10;i++) /* Recalcula array */

array[i] = array[i]*i;

for(i=0;i<10;i++) /* Imprime array */

printf("%d ",array[i]);

printf("\n");

}

Tema 5: Lenguajes del computador

diciembre de 2010 - 12

5.2 Jerarquía de traducción 5.2.2 Compiladores y ensambladores

Compiladores y ensambladores

• Compilador:

– Transforma el código en lenguaje de alto nivel (en texto ASCII) a

ensamblador (lenguaje ya “pegado” a la máquina, pero aún
expresado en texto ASCII).

• Ensamblador:

– Convierte el programa ensamblador en un fichero objeto, que ya

contiene datos binarios.

• Contenido de un fichero objeto:

– Instrucciones en lenguaje máquina.
– Datos (ya en formatos de almacenamiento interno: enteros en

C2, reales en punto flotante, texto en ASCII, etc.)

– Información de reubicación (para accesos a memoria, saltos,

etc.) :

• Necesaria porque los programas se dividen en módulos objeto

compilados por separado...

• ...que luego en enlazador (linker) juntará en uno sólo.
• En ese momento, se “pegarán todos los módulos”, se fijarán las

referencias cruzadas entre ell
  • Links de descarga
http://lwp-l.com/pdf10919

Comentarios de: Tema 5: Lenguajes del computador: alto nivel, ensamblador y máquina (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad