laboratorio de optimizaci on - uam azcapotzalco

35
Lenguajes de la m´ aquina Proceso de traducci´on Laboratorio de Optimizaci´ on Proceso de traducci´ on Oscar Alvarado Nava [email protected] Departamento de Electr´ onica Divisi´on de Ciencias B´ asicas e Ingenier´ ıa Universidad Aut´onoma Metropolitana, Unidad Azcapotzalco 17-Oto˜ no, septiembre de 2017 Oscar Alvarado Nava UAM Azcapotzalco Proceso de traducci´on 1/35

Upload: others

Post on 16-Oct-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Laboratorio de OptimizacionProceso de traduccion

Oscar Alvarado Nava

[email protected]

Departamento de ElectronicaDivision de Ciencias Basicas e Ingenierıa

Universidad Autonoma Metropolitana, Unidad Azcapotzalco

17-Otono, septiembre de 2017

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 1/35

Page 2: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Contenido

1 Lenguajes de la maquinaBajo nivelAlto nivel

2 Proceso de traduccionTraduccion con GCCCompilacion

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 2/35

Page 3: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Maquina multinivel

Físico:transistores, cables, etc.

Lógico:compuertas, unidades funcionales

Micro arquitectura:ruta de datos, control, memoria

Arquitectura:conjunto de instrucciones

Sistemaoperativo:

procesos, hilos,bibliotecas

Lenguajes ytraductores:

mediano,alto, interpretado

Aplicaciones:científico, negocios, oficina, juegos

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 3/35

Page 4: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Mecanismo de ejecucion

HD

RAM

CPU

sistemaoperativo

pc

ir

aluen

cabez

ado

101010101110

111000011111

001010100110

001111100010

100101100110

111110100000

100010100111

101010101110

111000011111

001010100110

001111100010

100101100110

111110100000

100010100111

001010100110

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 4/35

Page 5: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Componentes del mecanismo de ejecucion

Arquitectura de Von Neumman

Unidad de procesamiento, unidad de memoria, perifericosEl programa y los datos son almacenados en la memoria yllevados al CPU

PC (Program Counter), contador de programa

IR (Instruction Register), registro de instruccion

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 5/35

Page 6: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje maquina, Intel x86

0 010101010000000000000000000000004 100010011110010100000000000000008 10000011111011000001000000000000c 11000111010001011111110000001111

10 1100011101000101111110000000100114 1100011101000101111101000000000018 100010110100010111111000000000001c 1000101101010101111111000000000020 0000000111010000000000000000000024 1000101101000101111101000000000028 101110000000000000000000000000002c 1100100100000000000000000000000030 11000011000000000000000000000000

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 6/35

Page 7: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje maquina, Intel x86, en bytes

0 01010101 00000000 00000000 000000004 10001001 11100101 00000000 000000008 10000011 11101100 00010000 00000000c 11000111 01000101 11111100 00001111

10 11000111 01000101 11111000 0000100114 11000111 01000101 11110100 0000000018 10001011 01000101 11111000 000000001c 10001011 01010101 11111100 0000000020 00000001 11010000 00000000 0000000024 10001011 01000101 11110100 0000000028 10111000 00000000 00000000 000000002c 11001001 00000000 00000000 0000000030 11000011 00000000 00000000 00000000

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 7/35

Page 8: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje maquina, Intel x86

0 0101 0101 0000 0000 0000 0000 0000 00004 1000 1001 1110 0101 0000 0000 0000 00008 1000 0011 1110 1100 0001 0000 0000 0000c 1100 0111 0100 0101 1111 1100 0000 1111

10 1100 0111 0100 0101 1111 1000 0000 100114 1100 0111 0100 0101 1111 0100 0000 000018 1000 1011 0100 0101 1111 1000 0000 00001c 1000 1011 0101 0101 1111 1100 0000 000020 0000 0001 1101 0000 0000 0000 0000 000024 1000 1011 0100 0101 1111 0100 0000 000028 1011 1000 0000 0000 0000 0000 0000 00002c 1100 1001 0000 0000 0000 0000 0000 000030 1100 0011 0000 0000 0000 0000 0000 0000

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 8/35

Page 9: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje maquina, Intel x86, en hexadecimal

0 55 00 00 004 85 e5 00 008 83 ec 10 00c c7 45 fc 0f

10 c7 45 f8 0914 c7 45 f4 0018 8b 45 f8 001c 8b 55 fc 0020 01 d0 00 0024 8b 45 f4 0028 b8 00 00 002c c9 00 00 0030 c3 00 00 00

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 9/35

Page 10: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje ensamblador: Intel x86

1 .file “suma.c” ;archivo2 .text ;seccion de texto3 .globl main ;simbolo global4 main: .cfi startproc5 push %ebp ;libera pila6 mov %esp, %ebp7 sub $16, %esp8 movl $15, -4( %ebp)9 movl $9, -8( %ebp)

10 movl $0, -12( %ebp)11 mov -8( %ebp), %eax ;carga op112 mov -4( %ebp), %edx ;carga op213 add %edx, %eax ;suma de datos14 mov %eax, -12( %ebp) ;almacena resultado15 mov $0, %eax ;valor de regreso16 leave ;fin de modulo17 .cfi restore18 ret

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 10/35

Page 11: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje maquina del ARC

00000800 1100001000000000001010000001010000000804 1100010000000000001010000001100000000808 100001101000000001000000000000100000080c 1100011000100000001010000001110000000810 1000000111000011111000000000010000000814 0000000000000000000000000000111100000818 000000000000000000000000000010010000081c 00000000000000000000000000000000

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 11/35

Page 12: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje ensamblador del ARC

1 !suma de dos numeros2 .begin !inicia ensamblado3 .org 2048 !inicia bloque en la dir 20484 main: ld [x], %r1 !carga el contenido de x en r15 ld [y], %r2 !carga el contenido de y en r26 addcc %r1, %r2, %r3 !suma con codigos de condicion7 st %r3, [z] !almacena el contenido de r3 en z8 jmpl %r15+4, %r0 !salta y vincula (return)9 x:15 !inicializa x

10 y:9 !inicializa y11 z:0 !inicializa z12 .end !fin de ensamblado

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 12/35

Page 13: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje C

1 /* Arquitectura de Computadoras

2 * Oscar Alvarado Nava

3 */

45 int main()

6 {

7 int x=15;

8 int y=9;

9 int z=0;

1011 z = x + y;

1213 return 0;

14 }

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 13/35

Page 14: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Lenguaje de alto nivel

Un lenguaje de programacion de alto nivel se caracteriza porexpresar los algoritmos de una manera adecuada a lacapacidad cognitiva humana

El programador no tiene que pensar en terminos de comofunciona la maquinaEl codigo es mas sencillo y comprensible

El codigo fuente de un programa hecho en un lenguaje de altonivel es portable

Sera necesario compilarlo para la maquina a la cual se deseaejecutarSi lo hay, se debe considerar el sistema operativo

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 14/35

Page 15: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Bajo nivelAlto nivel

Algunos lenguajes de alto nivel

Ada Fortran 90ALGOL JavaBASIC LispC Modula-2C++ PascalC# PerlC Objective PHPCOBOL PythonFortran Ruby

Algunos lenguajes son utilizados en uno o dos paradigmas deprogramacion

Imperativa, estructurada, orientada a objetos, etc.

Algunos lenguajes son conocidos como lenguajes deprogramacion interpretados

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 15/35

Page 16: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Proceso de traduccion con GNU-GCC en Linux

fuente.i

compilador

ensamb.s

ensamblador

objeto.o

ejecutable

enlazador

extern voidmain(){printf();}

.dataMOVEADDIF A,0x32

----------------0101010---1110001---0100010---0100101---1100111

libm.a

fuente.c

#includemain(){printf();}

pre-procesador

----------------0101010---1110001---0100010---0100101---1100111----------------0101010---1110001---0100010---0100101---1100111

----------------0101010---1110001---0100010---0100101---1100111----------------0101010---1110001---0100010---0100101---1100111----------------0101010---1110001---0100010---0100101---1100111

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 16/35

Page 17: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Suma de dos numeros y una constante

1 /* Arquitectura de Computadoras

2 * Oscar Alvarado Nava

3 */

456 #define PI 3.14159

789 int main()

10 {

11 int x=15;

12 int y=9;

13 int z=0;

1415 z = x + y + PI;

161718 return 0;

19 }

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 17/35

Page 18: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Funcion de biblioteca

1 /* Arquitectura de Computadoras

2 * Oscar Alvarado Nava

3 */

4 #include <stdio.h>

56 #define PI 3.14159

789 int main()

10 {

11 int x=15;

12 int y=9;

13 int z=0;

1415 z = x + y + PI;

16 printf("la suma es %d\n",z);

1718 return 0;

19 }

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 18/35

Page 19: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Variable global inicializada

1 /* Arquitectura de Computadoras

2 * Oscar Alvarado Nava

3 */

4 #include <stdio.h>

56 #define PI 3.14159

7 float x=1.1;

89 int main()

10 {

11 int x=15;

12 int y=9;

13 int z=0;

1415 z = x + y + PI + x;

16 printf("la suma es %d\n",z);

1718 return 0;

19 }

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 19/35

Page 20: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Traduccion y ejecucion

Se llevan a cabo todas las fases del proceso de traduccion

Pre-procesamiento, compilacion, ensamblado y enlazado

El archivo final esta compuesto de modulos (objetos) delenguaje maquina enlazado con modulos de biblioteca y estalisto para ser cargado y ejecutado

oskr@kro:∼$ gcc fuente.c -o ejecutable

oskr@kro:∼$ ./ejecutable

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 20/35

Page 21: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Fases del proceso de traduccion

Con el modificador -v le pedimos al comando gcc quemuestre todas las fases de traduccion

oskr@kro:∼$ gcc -v fuente.c -o ejecutable

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 21/35

Page 22: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Opciones y modificadores

Como cualquier comando en Linux, gcc tiene un manual quepuede ser accedido desde la lınea de comandos

En el manual se puede consultar las opciones y modificadoresnecesarios

oskr@kro:∼$ man gcc

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 22/35

Page 23: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Pre-procesador (preprocessor)

Solo se lleva a cabo la fase pre-procesado

El pre-procesador cpp ubica sus directivas (#) y las resuelveEl archivo final contiene lenguaje C “puro”

oskr@kro:∼$ gcc -E fuente.c -o cPuro.i

oskr@kro:∼$ cat cPuro.i

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 23/35

Page 24: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Compilador (compiler)

Se completan las fases pre-procesado y compilacion

El compilador cc1 realiza los analisis correspondientes de lassentenciasEl archivo final contiene lenguaje ensamblador de laarquitectura en la que se esta compilando

oskr@kro:∼$ gcc -S fuente.c -o ensamblador.s

oskr@kro:∼$ cat ensamblador.s

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 24/35

Page 25: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Ensamblador (assembler)

Se completan las fases pre-procesado, compilacion yensamblado

El ensamblador as realiza la traduccion de instrucciones alenguaje maquinaEl archivo final contiene lenguaje maquina, tambien conocidocomo codigo objeto, el cual es lenguaje maquina

oskr@kro:∼$ gcc -c fuente.c -o objeto.o

oskr@kro:∼$ od -c objeto.o

oskr@kro:∼$ nm objeto.o

oskr@kro:∼$ size objeto.o

oskr@kro:∼$ readelf objeto.o

oskr@kro:∼$ objdump -Dslx objeto.o

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 25/35

Page 26: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Enlazador (linker)

El enlazador ld enlaza el codigos objetos desarrollados por elprogramador, con objetos almacenados en archivos bibliotecas

Si los encabezados y/o las bibliotecas no estan en la rutaestandar, se debera indicar-I indica la ruta de los encabezados y -L la ruta de losarchivos biblioteca

oskr@kro:∼$ gcc fuente.c -o ejecutable -I./include -L./lib -lac

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 26/35

Page 27: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Archivos ejecutables

El archivo final del proceso de compilacion es un archivoejecutable

De acuerdo al sistema operativo se tienen varios formatos

COM (Command file) para DOSa.out para UNIXCOFF (Common Object-File Format), para winbugsELF (Executable and Linking Format), para Linux

oskr@kro:∼$ od -c ejecutable

oskr@kro:∼$ nm ejecutable

oskr@kro:∼$ size ejecutable

oskr@kro:∼$ readelf ejecutable

oskr@kro:∼$ objdump -Dslx ejecutable

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 27/35

Page 28: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Secciones ELF

.init Inicializacion

.text Cadena

.fini Finalizacion

.rodata Datos solo lectura

.data Datos inicializados

.tdata Datos inicializados de hilos

.tbss Datos no inicializados de hilos

.ctors Constructores

.dtors Destructores

.got Tabla global de indices

.bss Block Started by Symbol

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 28/35

Page 29: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Fase de compilacion

swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; }

swap: muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000

Binary machine language program (for MIPS)

C compiler

Assembler

Assembly language program (for MIPS)

High-level language program (in C)

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 29/35

Page 30: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Compilacion

Proceso de traduccion de un lenguaje de alto nivel a otrofuncionalmente equivalente, tıpicamente expresado enlenguaje ensamblador de una arquitectura especıfica

Sentencia Instrucciones

{ld [B], %r1

A = B + 4; add %r1, 4, %r2

st %r2, [A]

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 30/35

Page 31: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Analisis

Lexicografico: Reduccion del texto del programa encomponentes lexicos o tokens: secuencia de caracteres quetienen un significado, como identificadores, separadores,operadores, constantes, etc.

Analisis de un texto para ver si esta bien escrito de acuerdo alas reglas de un lenguaje

Sintactico: Analisis (parser) de sımbolos para reconocer laestructura de programa

indentificador = expresionindentificador + constante

Semantico: Asociacion de identificadores con zonas dememoria, asociacion de tipos de datos

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 31/35

Page 32: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Sıntesis

Generacion de codigo: Asociacon de sentencias con secuenciasde instrucciones

Optimizacion de codigo: Busqueda para obtener un codigo lomas eficiente posible

Asignacion optima de registros y memoriaReduccion de secuencias de instrucciones

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 32/35

Page 33: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Mapeo

El compilador debera de conocer la informacion de laarquitectura del procesador

Numero de bytes para un enteroReferencia a operandos

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 33/35

Page 34: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Compilador cruzado

Si un compilador es capaz de compilar un programa para unaarquitectura diferente en la que se esta ejecutando, se diceque es un compilador cruzado (cross compiler)

Muestra la opciones y parametros para el proceso de traduccion

oskr@kro:∼$ gcc -dumpmachine

i486-linux-gnu

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 34/35

Page 35: Laboratorio de Optimizaci on - UAM Azcapotzalco

Lenguajes de la maquinaProceso de traduccion

Traduccion con GCCCompilacion

Fase de ensamblado

swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; }

swap: muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000

Binary machine language program (for MIPS)

C compiler

Assembler

Assembly language program (for MIPS)

High-level language program (in C)

Oscar Alvarado Nava UAM Azcapotzalco Proceso de traduccion 35/35