Tema 9: Lenguajes de programación y traductores 1. Lenguaje

Anuncio
Tema 9: Lenguajes de
programación y traductores
1. Lenguajes máquina, ensamblador, y
de alto nivel.
2. Traductores: compilador e intérprete.
3. Proceso de compilación: errores.
4. Clasificación de los lenguajes.
1
1. Lenguaje máquina
•
•
•
•
Único lenguaje que entiende el ordenador.
Estructura adaptada al procesador.
Difícil de entender para los humanos.
Permite aprovechar al máximo los recursos.
Características principales:
•
•
•
•
Instrucciones codificadas en binario.
Direcciones de memoria en lugar de variables.
Instrucciones muy simples.
Particular de cada procesador.
2
1
Ejemplos de programas en lenguaje máquina
00 08 00 05 94
21 FF D0 93 E1
00 2C 7C 3F
0B 78
55 89 E5 83
EC 18 8B 45
0C 89 C2 8D
04 12 8D 50
para
procesadores
Intel x86
(Pentium)
07 89 55 FC
8B 45 08 8B
4D 10 89 C2
29 CA 89 D0
01 C0 01 D0
8D 14 00 89
55 F8 8B 45
FC 3B 45 F8
90 7F 00 08 90
9F 00 0C 90 BF
00 10 81 3F 00
0C
7D 20 4B 78
7D 20 4A 14
38 09 00 07 90
1F 00 14
para
procesadores
Motorola
PowerPC
80 1F 00 08 81
3F 00 10 7C 09
00 50 7C 0B 03
78
55 69 10 3A
7D 29 02 14
7C 09 02 14 90
1F 00 18
7E 0E 8B 55
FC 89 D0 EB
0E EB 0C 90
8D 74 26 00
80 1F 00 14 81
3F 00 18 7C 00
48 00 40 81 00
14
8B 55 F8 89
D0 EB 00 C9
C3 00 00 00
08 00 00 00
80 1F 00 14 7C
03 03 78 48 00
00 14 48 00 00
10
Lenguaje ensamblador
• Más comprensible que el lenguaje máquina.
• Símbolos para representar las instrucciones.
• Símbolos para las direcciones de memoria.
• Cada instrucción en ensamblador equivale a una
instrucción en lenguaje máquina.
• Se requiere un programa traductor.
Programa en
lenguaje
ensamblador
Traductor
Programa en
lenguaje máquina
4
2
Ejemplos de programas en lenguaje ensamblador
funcion:
funcion:
para
procesadores
Intel x86
(Pentium)
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl 12(%ebp),%eax
movl %eax,%edx
leal (%edx,%edx),%eax
leal 7(%eax),%edx
movl %edx,-4(%ebp)
movl 8(%ebp),%eax
movl 16(%ebp),%ecx
movl %eax,%edx
subl %ecx,%edx
movl %edx,%eax
addl %eax,%eax
addl %edx,%eax
leal (%eax,%eax),%edx
movl %edx,-8(%ebp)
movl -4(%ebp),%eax
cmpl -8(%ebp),%eax
jle .L3
movl -4(%ebp),%edx
movl %edx,%eax
jmp .L2
jmp .L4
.p2align 4,,7
para
procesadores
Motorola
PowerPC
.L3:
movl -8(%ebp),%edx
movl %edx,%eax
jmp .L2
.p2align 4,,7
.L4:
.L2:
leave
ret
stwu 1,-48(1)
stw 31,44(1)
mr 31,1
stw 3,8(31)
stw 4,12(31)
stw 5,16(31)
lwz 9,12(31)
mr 0,9
add 9,0,9
addi 0,9,7
stw 0,20(31)
lwz 0,8(31)
lwz 9,16(31)
subf 0,9,0
mr 11,0
slwi 9,11,2
add 9,9,0
add 0,9,0
stw 0,24(31)
lwz 0,20(31)
lwz 9,24(31)
cmpw 0,0,9
bc 4,1,.L3
lwz 0,20(31)
mr 3,0
b .L2
b .L4
.L3:
lwz 0,24(31)
mr 3,0
b .L2
.L4:
.L2:
lwz 11,0(1)
lwz 31,-4(11)
mr 1,11
blr
Lenguajes de alto nivel
• Independientes de la estructura concreta del ordenador.
• Se aproxima al lenguaje natural.
• Utiliza variables y estructuras de datos para representar la
información.
• Utiliza estructuras de control de decisión y repetición.
• Se han de traducir a lenguaje máquina.
• Una instrucción del LAN se traduce a varias instrucciones en
lenguaje máquina.
6
3
Ejemplo de programa en lenguaje de
alto nivel
En enguaje C: para qualquier procesador
int funcion(int a, int b, int c)
{
int x, y;
x = 2 * b + 7;
y = (a - c) * 6;
if (x > y)
return x;
else
return y;
}
7
2. Programas traductores
Convierten un programa, o parte de un programa,
escrito en un lenguaje de alto nivel, a su equivalente
en lenguaje máquina.
Programa
fuente
Traductor
Programa
objecto
compilador
2 tipos de traductores
intérprete
8
4
Compilador
• Traduce completamente un programa fuente,
generando el programa objeto equivalente en
lenguaje máquina.
• El programa objeto se guarda en un fichero y se
puede ejecutar sin necesidad del compilador.
• Ejemplo: Borland C++
Datos
Programa
fuente
Compilador
Programa
objeto
Tiempo de
compilación
Ejecución en
ordenador
Resultados
Tiempo de
ejecución
9
Intérprete
• Traduce y ejecuta instrucción a instrucción.
• No se guarda ningún fichero de programa objeto.
-Menos eficiente.
+Más interactivo.
• Ejemplo: Matlab
Datos
Programa
fuente
Intérprete
Resultados
10
5
3. Proceso de compilación
Ediciónn del
programa fuente
SI
Programa
fuente
Compilador
Errores?
Bibliotecas
NO
Programa
objeto
Montador
Programa
ejecutable
11
Tipos de errores de compilación
Léxicos: palabras incorrectas.
whyle (x>0)
...
Sintácticos: construcciones incorrectas.
if (a>b>c)
...
Semánticos: construcciones correctas, pero sin sentido.
int x;
...
x[3] = 5;
12
6
Errores no detectados pel compilador
Lógicos: algoritmo incorrecto. Ej. Intercambiar a y b :
temp = a;
a = b;
a = b;
b = a;
b = temp;
De ejecución: relacionados con situaciones de la ejecución del
programa.
• División por 0
• Raíz cuadrada de un número negativo
• Acceder a un elemento inexistente de un vector
• Leer un fichero sin información
13
4. Clasificación de los lenguajes
de alto nivel
Según el ámbito de su aplicación:
•Científicos: Fortran, Matlab, Mathematica.
•De gestión: COBOL, SQL.
•De uso docente: Logo, BASIC, Pascal.
•De inteligencia artificial: LISP, PROLOG.
•De programación de sistemas: ADA, C / C++.
14
7
Bibliografía
• L. A. Ureña, et al.
Fundamentos de Informática, cap. 9.
RA-MA, 1997.
• P. Bishop.
Conceptos de Informática, cap. 20.
Anaya Multimedia, 1991.
15
8
Descargar