• No se han encontrado resultados

Del programa en C a sus resultados. Introducción a la Programación Clase 3 Patricia Borensztejn

N/A
N/A
Protected

Academic year: 2021

Share "Del programa en C a sus resultados. Introducción a la Programación Clase 3 Patricia Borensztejn"

Copied!
14
0
0

Texto completo

(1)

Del programa en C a sus resultados

Introducción a la Programación

Clase 3

(2)

De un programa C a su carga en

memoria para su ejecución

(3)

Compilar, Enlazar, cargar

• Tres procesos deben efectuarse sobre el

programa fuente (hello.c) para que éste pueda

ejecutarse.

– Proceso de Compilación (Compile)

• Toma como entrada un archivo fuente (.c)

• Saca como salida un archivo objeto (.o)

– Proceso de Enlace (Link)

• Toma como entrada uno o varios archivos objeto

• Saca como salida un archivo ejecutable

– Proceso de Carga en memoria (Load)

• Toma como entrada un archivo ejecutable

• No hay salida

(4)

Compilación

• Si no especificamos nada, gcc compila,

ensambla y enlaza, es decir, genera el

ejecutable. A ese conjunto de funciones se

las llama «

build»

.

• En

http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/

tenemos un manual on-line de las

opciones de compilación del gcc

(5)

Compilación sin enlazar: opción -c

C:\Users\Patricia\programas_c> gcc -c euler1.c

C:\Users\Patricia\programas_c>dir

El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: 1C16-BCF3 Directorio de C:\Users\Patricia\programas_c 30/03/2011 08:57 p.m. <DIR> . 30/03/2011 08:57 p.m. <DIR> .. 25/03/2011 10:42 a.m. 236 euler1.c 27/03/2011 11:47 a.m. 25.126 euler1.exe 30/03/2011 08:57 p.m. 610 euler1.o

(6)

Compilación sin ensamblar: opción -S

C:\Users\Patricia\programas_c> gcc -S euler1.c

C:\Users\Patricia\programas_c>dir

El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: 1C16-BCF3 Directorio de C:\Users\Patricia\programas_c 30/03/2011 09:41 p.m. <DIR> . 30/03/2011 09:41 p.m. <DIR> .. 27/03/2011 03:50 p.m. 25.126 euler.exe 25/03/2011 10:42 a.m. 236 euler1.c 27/03/2011 11:47 a.m. 25.126 euler1.exe 30/03/2011 08:57 p.m. 610 euler1.o 30/03/2011 09:41 p.m. 776 euler1.s 5 archivos 51.874 bytes

(7)

Programa Hello.s (ensamblador ia32)

.file "euler1.c"

.def ___main; .scl 2; .type 32; .endef .section .rdata,"dr"

LC0:

.ascii "El resultado es %d\12\0" .text

.globl _main

.def _main; .scl 2; .type 32; .endef _main:

pushl %ebp

movl %esp, %ebp andl $-16, %esp subl $32, %esp call ___main movl $0, 24(%esp) movl $3, 28(%esp) jmp L2

(8)

Programa Hello.s (cont)

L5:

movl 28(%esp), %eax movl $3, %edx

movl %edx, %ecx cltd

idivl %ecx

movl %edx, %eax testl %eax, %eax je L3

movl 28(%esp), %eax movl $5, %edx

movl %edx, %ecx cltd

idivl %ecx

movl %edx, %eax testl %eax, %eax jne L4

L3:

movl 28(%esp), %eax addl %eax, 24(%esp) L4:

incl 28(%esp) L2:

cmpl $999, 28(%esp) jle L5

movl 24(%esp), %eax movl %eax, 4(%esp) movl $LC0, (%esp) call _printf movl $0, %eax leave ret .def _printf; .scl 2; .type 32; .endef

(9)

Etapa de Compilación

• Dos funciones:

– Chequeo de sintaxis: independiente de la máquina, solo

depende de la especificación del lenguaje

– Generación de código máquina:

dependiente de la

máquina

• Durante la etapa de compilación estricta (opción –c) si

el compilador encuentra una función o variable no

definida, NO da error. Supone que está definida en

algún otro archivo.

• Los errores típicos de compilación son:

– Paréntesis sobrantes o faltantes, punto y coma faltante,

llaves mal puestas.

(10)

Etapa de enlace

• En esta etapa, se unen todos los archivos .o y se

genera un archivo ejecutable, con el

formato

definido por el Sistema Operativo

en uso.

• En windows, los ejecutables tienen extensión .exe

• En linux, ninguna extensión.

• Errores típicos de linkedición o enlace:

– Variables no declaradas, funciones no declaradas, o

declaradas varias veces.

(11)

Importante

• El proceso de compilación y enlace depende

de la máquina y del sistema operativo.

• No hay compatibilidad binaria entre distintas

máquinas (ISA´s) y distintos SO´s.

• Ese es el negocio! Estas atrapado en una

máquina y en un SO y no te podes mover de

ahí si no tenes los fuentes de tu programa!!!!!!

(12)

Ejecutables

• Los formatos de los archivos ejecutables

dependen del Sistema Operativo.

• Contienen una cabecera con información que

incluye el tamaño del código y de los datos, y una

lista de lugares dentro del código que deberán ser

reubicadas en función de la posición de memoria

donde el módulo sea cargado para su ejecución.

Es decir, el ejecutable contiene posiciones

(13)

Carga

• El SO tiene un programa cuya función es instalar

el ejecutable en memoria. Obviamente la

cabecera no se instala, sino que sirve para

modificar el ejecutable.

• El lugar de la memoria donde se instala el

programa, lo decide el SO.

• Los SO actualmente no instalan TODO el

programa en memoria, sino solo el principio

(donde está el main)… luego, van trayendo el

código y los datos a demanda… esto se llama

Memoria Virtual y sirve para que quepan mas

cosas en memoria.

(14)

Compiladores de C: GNU

• GNU : Sistema de software no propietario, de dominio público, que está a

libre disposición en Internet, de forma que cualquiera puede bajarlo,

modificarlo y redistribuirlo. Fue iniciado en 1.984 por Richard Stallman en

el MIT. Dentro de la inmensa cantidad de software que ha generado la

iniciativa, cabe destacar GCC ("GNU C Compiler") que rápidamente se

convirtió en un conjunto de compiladores de los lenguajes más

importantes (C++, Objective-C; Objective-C++; Fortran; Java; Ada; Pascal y

COBOL), por lo que las siglas anteriores pasaron a significar "GNU

Compiler Collection". Los compiladores que la componen tienen a su vez

nombres individuales. Por ejemplo, el de Ada es GNAT, y el de C++ es

conocido como G++. Cabe destacar que todos ellos son compiladores

nativos, en el sentido de que no se trata de preprocesadores que trasladan

el código a otro lenguaje (como ocurría con las versiones originales de

C++), y que existen versiones para los procesadores y máquinas más

importantes: Intel; DEC; HP; Motorola; PDP; Power PC; SPARC; VAX; etc.

Referencias

Documento similar

A partir de los resultados de este análisis en los que la entrevistadora es la protagonista frente a los entrevistados, la información política veraz, que se supone que

A pesar de configurar una unidad geográfica más o menos clara , el Montseny presenta una gran diversi- dad climá tica y de paisajes en un área relativamente reducida: desde los

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Por PEDRO A. EUROPEIZACIÓN DEL DERECHO PRIVADO. Re- laciones entre el Derecho privado y el ordenamiento comunitario. Ca- racterización del Derecho privado comunitario. A) Mecanismos

Parallel processes typically need to exchange data.. There are several ways this can be accomplished, such as through a shared memory bus or over a network, however the actual

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación