ejecución programa

Upload: paul-sworkzangstersky

Post on 20-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Ejecucin Programa

    1/15

    Cambiar a contenido.| Saltar a navegacin

    Buscar Buscar en el Sitio Buscar

    solo en la seccin actualBsqueda Avanzada

    Secciones

    InicioCursosTitulacionesSobre OCWAyudaContactoInformes

    Contenidos deCurso

    Arquitecturadeordenadores(2008)Inicio

    ProgramaBibliografaLecturaobligatoriaMaterial declaseEjerciciosPrcticasPruebas deevaluacinGua deaprendizajeProfesoradoDownloadThis Course

    Usted est aqu: Inicio Ingeniera Telemtica Arquitectura de ordenadores(2008) Lecturas html Captulo 1

    Captulo 1

    Acciones de Documento

    Autor: Abelardo Pardo

    Captulo 1. Ejecucin de programas en un ordenador

    Ejecucin de programas en unordenador

    Tabla de contenidos

    1.1. Perspectivas de un ordenador1.2. Niveles de abstraccin

    1.2.1. Estudio de un procesador a nivel lenguaje mquina1.3. Estructura de un ordenador1.4. Definicin de un programa1.5. El lenguaje ensamblador

    1.5.1. Programacin en lenguaje ensamblador1.5.2. Ejecucin de un programa en ensamblador

    1.6. Ejecucin de un programa

    ReutilizarCurso

    Descargareste curso

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    2/15

    En este captulo se describen las diferentes formas posibles de percibir unordenador y su funcionamiento. El usuario comn lo percibe como unamquina capaz de ejecutar ciertas rdenes o comandos que se le comunicanutilizando los dispositivos tales como teclado, ratn, etc. Pero para la personacon nociones bsicas de electrnica digital, el ordenador es un circuitocomplejo que permite la ejecucin de ciertos comandos sencillos. Cmo esposible que el mismo objeto sea percibido de forma tan diferente? Esto esdebido a que existen varios niveles desde los que se puede analizar laestructura de un ordenador. Cuando el usuario convencional introduce uncomando por teclado, el ordenador lo ejecuta mediante un nmero muyelevado de instrucciones bsicas que permiten la comunicacin con losdiferentes dispositivos para obtener los datos as como las operacionesbsicas en el interior del procesador. Se ver cmo tareas comunessolicitadas por un usuario requieren la participacin de varias partes delordenador.

    1.1. Perspectivas de un ordenador

    Un ordenador es un objeto que se puede percibir de mltiples formas, y todasellas correctas. Cuando un usuario se sienta frente a uno de ellos y comienzaa trabajar, el ordenador se percibe como un objeto que permite manipular unaserie de programas que a su vez realizan una serie de tareas. Por ejemplo, al

    conectarse a internet y entrar en un chat, el ordenador permite, a travs delprograma de chat, el intercambio de mensajes con un conjunto de personasque a su vez estn utilizando ese mismo programa en otros ordenadores enotros lugares. Pero adems de utilizar el programa de chat, no se debe olvidarque se se est utilizando igualmente la pantalla para visualizar los mensajes,el teclado para introducir su texto, y posiblemente el ratn para seleccionariconos o ventanas en la pantalla.

    Otro ejemplo de utilizacin del ordenador es cuando un usuario abre unfichero de texto y comienza a escribir una carta. El ordenador facilita eltrabajo de escritura y almacenamiento de este documento que puede incluirelementos especiales tales como imgenes, diferentes tipos de letras, grficascon datos, etc. Para realizar esta tarea tambin se utiliza la pantalla paravisualizar los datos, el teclado para introducir texto, y el ratn para realizartareas de seleccin y manipulacin de texto. Si este documento creado deforma electrnica se necesita en papel, el ordenador permite enviarloa unaimpresora que se encarga de plasmar en papel lo que hasta el momento sehaba mostrado en pantalla.

    Tanto la utilizacin de un programa de chat como la redaccin e impresin deuna carta son tareas que han sido previamente introducidas o programadasen el ordenador y por tanto puede ejecutarlas cuando el usuario as lorequiera. Pero los ordenadores poseen una propiedad que los hace realmentepotentes: se pueden programar con tareas nuevas. Es decir, si un ordenadorno dispone del programa necesario para realizar una tarea, y sta esprogramable, existen lenguajes de programacin tales como Java quepermiten escribir estos programas e instalarlos. A partir de ese momento, elordenador podr ejecutar el programa escrito tantas veces como el usuariodesee.

    Pero estos lenguajes de programacin, a pesar de que sirven para conseguirque el ordenador realice una tarea concreta, no son los que el ordenadorentiende directamente. Antes de instalar un programa es preciso traducirlo allenguaje bsico que se maneja internamente. A este proceso de traduccin sele denomina compilacin. Segn el diccionario de la lengua espaola, lapalabra compilar significa preparar un programa en el lenguaje mquina apartir de otro programa de ordenador escrito en otro lenguaje. Una vez queel programa ha sido traducido o compilado, el ordenador ya puede ejecutarlo.Esta forma de utilizar un ordenador, como un objeto al que podemos darle

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    2 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    3/15

    rdenes precisas sobre tareas, mediante un programa escrito en un lenguajede programacin, y que se traduce al lenguaje mquina interno delordenador, es lo que denominaremos la perspectiva del programador. Lafigura 1.1muestra de forma grfica los elementos de la perspectiva delprogramador.

    Figura 1.1. Perspectiva del programador

    Pero adems de los ejemplos cotidianos de uso, es posible percibir unordenador desde una perspectiva totalmente diferente. En efecto, si sedispone de nociones bsicas de electrnica digital, se sabe que en su interiorhay una serie de circuitos electrnicos interconectados entre s. Si se abre lacaja de un ordenador puede verse todo un conjunto de pequeos circuitos

    interconectados por infinidad de cables que atraviesan una superficie rgidaconocido genricamente con el nombre de placa. Los circuitos, a su vezestn diseados utilizando puertas lgicas, que a su vez constan de unconjunto de transistores. La manera en que dichas puertas lgicas estnconectadas permite realizar operaciones aritmticas bsicas tales comosumas, restas, multiplicaciones, divisiones, etc. Al igual que todo circuitoelectrnico, se necesita un cierto voltaje para que funcione que esproporcionado por otro circuito que es conocido como la fuente dealimentacin y que forma parte del ordenador.

    Si se observa con ms detalle la estructura interna de un ordenador, esposible distinguir algunos de sus componentes. Los discos duros suelen teneraspecto de caja metlica rectangular con conectores en uno de sus lados.Puede verse cmo algunos de los conectores que aparecen en la parteposterior de la caja del ordenador estn conectados a pequeas placas concircuitos impresos que a su vez estn conectadas a una placa mayor queocupa casi la totalidad de la carcasa.

    De todos los circuitos o componentes presentes en el ordenador, hay unoespecialmente importante. Se distingue, en la mayora de los ordenadores,porque es el circuito de mayor tamao en el equipo y requiere su propioventilador para evitar recalentamientos por lo que no suele estardirectamente visible. Este circuito es el que se conoce con el nombre deprocesador, y es el responsable de dirigir, controlar y ejecutar las principalestareas que realiza el ordenador. La caracterstica fundamental de esteprocesador es que puede ejecutar programas en lenguaje mquina. Por tanto,el lenguaje mquina es aqul que consta de las instrucciones o comandos queson entendidos por el procesador.

    Recordemos que una de las principales capacidades del ordenador es la deejecutar programas, y una gran parte de esta capacidad se debe a lapresencia del procesador. Esta perspectiva del ordenador como un conjuntode circuitos electrnicos interconectados entre s se denominar laperspectiva del diseador. La figura 1.2muestra algunos de los elementos delos que consta esta perspectiva.

    Figura 1.2. Perspectiva del diseador

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    3 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    4/15

    Una vez vistas estas dos perspectivas posibles, cmo puede un equipoformado por estos componentes electrnicos permitirnos tareas tales como,por ejemplo, comprar por internet?

    La respuesta a esta pregunta es larga y sobre todo compleja, y por ello debeser tratada en diferentes fases. En lo que resta de este documento se ofreceparte de la respuesta a dicha pregunta mediante la explicacin delfuncionamiento de un procesador desde el punto de vista de su programacinen lenguaje mquina. La programacin en lenguajes como Java es posibleporque los programas se compilan y se obtiene el lenguaje mquina que elprocesador es capaz de ejecutar.

    El objetivo, por tanto es ofrecer una tercera visin de un ordenador que seencuentra entre la perspectiva del diseador y la de usuario. El estudio delordenador se centra alrededor del procesador y su lenguaje mquina, que escapaz de ofrecer la funcionalidad necesaria para ejecutar los programasdiseados en lenguajes tales como Java. La figura 1.3ilustra la nuevaperspectiva a estudiar con respecto a las dos anteriores.

    Figura 1.3. Diferentes perspectivas de un ordenador

    1.2. Niveles de abstraccin

    Generalmente, en entornos cientficos, cuando se estudia un problemademasiado complejo se utilizan mecanismos que permitan simplificarlo peroque a la vez se muestren sus aspectos ms relevantes. A este proceso desimplificacin, en el que ciertos aspectos se ocultan reduciendo as sucomplejidad, se le denomina abstraccin

    Para ilustrar el proceso de abstraccin se puede tomar como ejemplo elproblema de buscar un edificio en cualquier lugar del mundo mediante sudireccin de correo postal. Las direcciones de correo postal incluyen el pasen el que se encuentra el destinatario. En un primer nivel de bsqueda, setoma la informacin referida a todos los pases del mundo y se selecciona elpas especificado en la direccin. En una segunda fase, se obtiene lainformacin sobre la divisin interna de un pas (estas divisiones puedentener diferentes nombres tales como comunidades, provincias,departamentos, estados, etc.) Una vez localizada la unidad territorial se debeseleccionar una ciudad. Para ello, tan slo es preciso obtener la informacinde ciudades incluidas en la unidad territorial bajo consideracin y localizar ladel destinatario. Finalmente, dentro de la ciudad se debe obtener lainformacin sobre las calles y sus nmeros para conocer la posicin exacta

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    4 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    5/15

    del edificio que se busca.

    La informacin manipulada durante este proceso se puede dividir en variascategoras:

    Informacin sobre todos los pases del mundo.

    Unidades territoriales dentro del pas seleccionado.

    Ciudades dentro de la unidad seleccionada.

    Calles dentro de la ciudad seleccionada.

    Nmeros dentro de la calle seleccionada.

    Entre estas categoras existe una relacin muy intuitiva. Cada una de ellascontiene detalles de la siguiente categora. La informacin sobre todos lospases del mundo puede incluir adems todas las divisiones en unidadesterritoriales. De igual forma, los datos sobre todas las ciudades de una unidadterritorial puede incluir todas sus calles. Sin embargo, la solucin delproblema de localizar un edificio se simplifica sustancialmente si los datosestn divididos en las categoras antes mencionadas, es decir, una categoraincluye la informacin de su nivel e ignora o abstraelos datos del resto decategoras.

    Se puede decir que como cada una de estas categoras ignora detalles de lascategoras siguientes, simplifica la informacin acerca de la localizacin deedificios en el mundo pero, a la vez, conservando los aspectos ms relevantes.Cada una de estas categoras puede ser considerada como un nivel deabstraccin.

    Generalizando este concepto, los niveles de abstraccin son diferentesvisiones de una misma entidad relacionadas de tal forma que cada una deellas provee ms detalle que el nivel anterior, pero ignora detalles del nivelsiguiente. Como conclusin, entre los niveles de abstraccin se puedeestablecer una relacin con respecto a dos aspectos: la complejidad y eldetalle. La figura 1.4ilustra un ejemplo con cuatro niveles y cmo lacomplejidad y el detalle se relacionan de manera inversa. A mayor nivel decomplejidad, mayor nmero de detalles, y cuanto menos complejo es elresultado de una abstraccin, menos detalles incluye.

    Figura 1.4. Relacin entre los niveles de abstraccin

    Un segundo ejemplo de los diferentes niveles de abstraccin es la escala deun mapa topogrfico. Un mapa es una representacin de algunos de los

    aspectos contenidos en una determinada rea. El tamao del mapa y el dedicha rea estn relacionados mediante un factor de escala. Es posible tenermapas de la misma rea pero realizados a diferente factor de escala. Estosmapas ofrecen diferentes visiones del lugar pero con diferentes niveles decomplejidad y detalle.

    La observacin clave de estos dos ejemplos es que la resolucin de problemasen un mbito concreto es posible representando la realidad mediante un nivelde abstraccin adecuado. Por ejemplo, si una empresa de distribucin demercancas a nivel mundial necesita decidir dnde situar sus centros de

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    5 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    6/15

    distribucin, no es preciso que utilice la informacin de qu nmeros hay encada calle. Igualmente, un ingeniero que desea disear una autopista nopuede utilizar un mapa con una escala tan grande que no se perciban losuficiente los accidentes orogrficos.

    1.2.1. Estudio de un procesador a nivel lenguaje mquina

    En el caso del estudio de un procesador y de su integracin en un ordenador,

    existen mltiples niveles de abstraccin y cada uno de ellos contienediferentes tipos de detalles. A nivel ms detallado, un procesador funcionacomo un circuito electrnico en el que las intensidades de corriente y losvoltajes van cambiando en diferentes partes consiguiendo as su correctofuncionamiento. Estas corrientes y voltajes son, a su vez, movimientos deelectrones a nivel atmico del material semiconductor del que est hecho elprocesador. En el otro extremo se puede estudiar el ordenador en su totalidada travs de las tareas que puede ejecutar y la comunicacin a travs de susdispositivos.

    De entre estos dos niveles de abstraccin, el estudio que se presenta en estedocumento est realizado a nivel del lenguaje mquina que el procesador escapaz de ejecutar. Para clarificar ms los detalles que forman parte de estenivel los compararemos con los niveles de abstraccin adyacentes.

    En un nivel ms abstracto se puede situar la ejecucin de programas enlenguajes de alto nivel tales como Java. Las instrucciones que se escriben sonms sofisticadas (bucles, condicionales, comparaciones, etc) y se cien a unasintaxis especfica de dicho lenguaje. Ntese que un mismo procesador puedeejecutar programas escritos en diferentes lenguajes de programacin. Tanslo es preciso utilizar un procedimiento de compilacin adecuado paratraducir estos lenguajes al lenguaje mquina del procesador. A lo largo de lossiguientes captulos se harn breves incursiones desde el lenguaje mquinahasta este nivel de abstraccin con el propsito de ilustrar el proceso decompilacin.

    En un nivel de abstraccin ms detallado del lenguaje mquina se encuentrala estructura interna del procesador. Estos detalles son imprescindibles paraentender cmo se ejecutan paso a paso las diferentes instrucciones que

    forman parte del lenguaje mquina. Basndose en la estructura interna de unprocesador se puede entender, por ejemplo, el tiempo que tarda ste enejecutar una determinada instruccin as como los circuitos que utiliza.Anlogamente al nivel de abstraccin anterior, en los siguientes captulos semencionarn algunos detalles de este nivel para facilitar la comprensin decmo el procesador ejecuta las instrucciones en lenguaje mquina.

    1.3. Estructura de un ordenador

    La estructura interna o arquitectura de un ordenador vara enormemente deunos modelos a otros sobre todo de la tarea a la que est orientado el equipo.As, un ordenador de los denominados personales, es decir, orientado arealizar tareas relativas a una persona, puede tener una estructura diferentea un ordenador que utilizado para el almacenaje masivo y acceso al conjunto

    de datos de una empresa.

    Como es imposible mostrar la gran variedad de arquitecturas que existen hoyen da en el mercado de ordenadores, se ha optado por presentar un modelosimplificado de la arquitectura de un ordenador personal, tambin conocidocomoPCque es la abreviatura del trmino ingls personal computer. Lafigura 1.5ilustra este modelo.

    Figura 1.5. Estructura de un ordenador

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    6 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    7/15

    Todo ordenador tiene, como parte fundamental de su arquitectura, al menosun procesador. En su interior se encuentran una serie de elementos bsicostales como registros (capaces de almacenar pequeas cantidades deinformacin), unidad aritmtico-lgica o UAL (capaz de realizar simplesoperaciones aritmticas), unidad de control, etc. Este procesador se comunicacon el resto del ordenador a travs de lo que denominaremos el bus delsistema.

    La comunicacin entre el procesador y el resto del equipo se puede dividir asu vez en dos categoras: la conexin con la memoria (tambin llamadamemoria principal o memoria RAM), y la conexin con los dispositivos deentrada salida (E/S). El circuito representado en la figura 1.5por el nombrePuente E/Ses el encargado de separar los datos de estas categoras. Laconexin con la memoria RAM se realiza a travs del bus de memoria. Estamemoria es capaz de almacenar informacin mientras el equipo est

    encendido. Al apagar el equipo, los datos almacenados en este dispositivo sepierden, por este motivo, tambin se le conoce como memoria voltil.

    Los datos dirigidos a los dispositivos de entrada/salida se envan a travs delbus de entrada/salida (o bus E/S). Este bus se utiliza para conectar todos losdispositivos auxiliares que necesita el ordenador para su funcionamiento.Dichos dispositivos no se conectan directamente el bus, sino a un circuitoencargado de gestionar su comunicacin denominado controlador.

    Los dispositivos ms comunes presentes en la mayora de los ordenadorespersonales son el teclado, el ratn, la pantalla y el disco duro. Teclado y ratnson dos dispositivos de entrada de datos (el ordenador slo recibe datos deellos), la pantalla es de salida de datos, y el disco duro es de entrada y salidade datos (se realizan operaciones de lectura y escritura). Este disco tiene unafuncionalidad similar a la memoria RAM, es decir, almacenar datos, pero conla diferencia de que si se apaga el equipo, la informacin permanecealmacenada sin alteraciones. A los dispositivos con esta propiedad (discoduro, CD-ROM, DVD, etc.) se les denomina memoria no voltil.

    Una de las caractersticas que ha contribuido a que esta arquitectura hayaalcanzado un nivel tan alto de popularidad es la posibilidad de conectar deforma sencilla dispositivos adicionales. El bus de entrada/salida estpreparado para conectar ms dispositivos y as dotar al ordenador de mayorcapacidad. De esta forma, el ordenador se puede completar con una

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    7 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    8/15

    impresora, un scanner, discos duros adicionales, lector/grabador de DVDs,etc. La mayora de estos dispositivos se conectan al ordenador ya sea a travsde conectores especficamente incluidos a tal efecto (tal es el caso de laconexin de una impresora al puerto paralelo) o a travs de las clavijas deexpansin.

    1.4. Definicin de un programa

    Un programa es un conjunto de rdenes o instrucciones por las que unordenador realiza diversas funciones. Los programas estn escritos en unlenguaje de programacin mediante la utilizacin de un editor.

    Tmese como ejemplo el programa escrito en el lenguaje de programacinJava que se muestra en el ejemplo 1.1. En l se pueden apreciar detallescomunes a cualquier programa.

    Ejemplo 1.1. Programa en Java

    // Definicin de la clase Programa

    public class Programa {

    // Definicin del mtodo main

    public static void main(String[] args) {

    String mensaje;

    // Inicializacin del mensaje a imprimir mensaje = new String("Este es mi primer programa");

    // Imprimir el mensaje

    System.out.println(mensaje);

    } // Final del mtodo main

    } // Final de la clase Programa

    La primera observacin es que, tal y como se ha dicho anteriormente, laspalabras que se utilizan y su significado estn estipuladas por la definicin dellenguaje de programacin Java. Todo programa define un conjunto de rdenesa ejecutar sobre un conjunto de datos, por lo que adems de las rdenes,tambin se incluyen en un programa la definicin de los datos a utilizar (en elejemplo es la definicin de una variable con nombre mensaje).

    El primer paso para que el ordenador ejecute las rdenes contenidas en unprograma es escribir su contenido en un fichero. En el caso concreto de Java,este fichero ha de contener lo que se denomina texto plano,es decir, unfichero que contenga nicamente el texto sin informacin de formato,mrgenes, imgenes, etc. Supongamos que este fichero tiene por nombrePrograma.java.

    El siguiente paso es lo que se denomina la compilacindel programa yconsiste en traducir el fichero Programa.javaal lenguaje que el procesador escapaz de entender, es decir, a lenguaje mquina. En general, este proceso detraduccin consiste en varios pasos o etapas que son realizadas por variosprogramas diferentes. Existen lenguajes de programacin y ordenadores en elque el proceso de compilacin se realiza en un nico paso y por un nicoprograma, y otros en los que se requieren mltiples pasos y cada uno de ellos

    lo realiza un programa diferente. En el ejemplo del programa Java, el procesode traduccin a lenguaje mquina se ilustra en la figura 1.6.

    Figura 1.6. Creacin de un ejecutable en Java

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    8 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    9/15

    En general, no todos los ficheros temporales resultantes de las diferentesetapas de traduccin o compilacin son visibles al usuario. En el caso de unprograma Java, tal y como ilustra la figura 1.6se utiliza la herramientajavacque a partir de un fichero fuente produce un fichero temporal con extensin.class. A partir de este fichero, la herramientajavarealiza la traduccin quefalta y procede a su ejecucin. En este ejemplo, ambas herramientas seinvocan a travs de un intrprete de comandos.

    1.5. El lenguaje ensamblador

    El procesador que contiene todo ordenador es capaz de ejecutar un conjuntode instrucciones definidas en el lenguaje mquina.La forma de definir estasinstrucciones, al igual que el resto de informacin contenida en un ordenador,es mediante la utilizacin de ceros y unos. En otras palabras, todas las

    instrucciones que es capaz de ejecutar un procesador se deben codificarmediante ceros y unos de una forma especfica e inequvoca. Se puede decir,por tanto, que el lenguaje del procesador es el lenguaje mquina.

    Al igual que en el caso de Java, es posible escribir programas en lenguajeensamblador para que sean ejecutados por el procesador. Pero escribir unprograma de estas caractersticas es impensable, puesto que no sera msque una sucesin de ceros y unos codificando los datos y las rdenes delprograma. Para facilitar esta tarea se define el lenguaje ensambladorque noes ms que una representacin de las instrucciones y datos del lenguajemquina pero utilizando letras y nmeros en lugar de la lgica binaria (cerosy unos).

    La traduccin del lenguaje ensamblador a lenguaje mquina se realiza con unprograma encargado de producir la codificacin en ceros y unos del programapara su posterior ejecucin. Dada la proximidad entre estos dos lenguajes, amenudo sus nombres se utilizan de manera indistinta.

    El ejemplo 1.2muestra un sencillo programa escrito en lenguaje ensambladorde la arquitectura IA-32. En los siguientes captulos se hace un estudio msdetallado del lenguaje mquina de esta arquitectura as como de susprincipales caractersticas. Por el momento, es suficiente saber que el cdigomquina mostrado corresponde a dicha arquitectura. De la mera inspeccinvisual de este programa se pueden deducir varios aspectos de la

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    9 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    10/15

    programacin en lenguaje ensamblador.

    Ejemplo 1.2. Programa en ensamblador

    .data # Comienza seccin de datos

    mensaje:.asciz "Este es mi primer programa\n" # Mensaje a imprimir

    .text # Comienza la seccin de cdigo

    .globl main # Declaracin de main como smbolo

    # global

    main: push %ebp # Bloque de activacin

    mov %esp, %ebp

    push $mensaje # mueve un dato a la pila

    call printf # printf es una funcin que

    # imprime por pantalla los

    # datos que recibe

    add $4, %esp # borra la cima de la pila

    mov %ebp, %esp # Deshacer bloque de activacin

    pop %ebp

    ret # termina el programa

    El programa consta de dos secciones claramente diferenciadas. La primera deellas comienza a partir de la palabra .datay es la seccin de datos tal y comolee el comentario que se encuentra a continuacin. En ella podemosencontrar la definicin de los datos que van a ser utilizados por el programa.Ntese cmo se define un mensaje mediante la utilizacin de los smbolosmensajey .asciz.

    La segunda seccin comienza a partir de la palabra .textcomo indica elcomentario en la misma lnea. A continuacin encontramos una lnea en laque el smbolo mainse define como global (sin saber qu quiere decir esto). Loms revelador del programa se encuentra a partir de este punto, puesaparece la palabra mainseguida por cuatro lneas que se corresponden concuatro instrucciones del lenguaje mquina del procesador.

    El punto del cdigo en el que se encuentra la palabramain:

    corresponde con elpunto de arranque del programa. A continuacin, se encuentran variasinstrucciones mquina. Estas instrucciones son extremadamente cortas,constan de una nica palabra (tal es el caso de la ltima lnea) o de unapalabra seguida de una o dos ms separadas por comas. Estas instruccionespueden incluir palabras que aparecen previamente en el texto (por ejemplopush $mensaje), nmeros (por ejemplo add $4, %esp), as como otrosidentificadores.

    Adems, y mediante la interpretacin de los comentarios incluidos al final decada lnea, se puede deducir que el programa imprime un mensaje porpantalla, y para eso utiliza una funcin denominada printf.

    Si se compara el programa ensamblador del ejemplo 1.2con el programa Javadel ejemplo 1.1, las diferencias son aparentes. La sintaxis, el tipo de

    instrucciones y la definicin de datos son radicalmente diferentes. Lo que stienen ambos programas en comn es que contienen un conjunto de rdenesy los datos utilizados. Aunque en estos dos ejemplo no es aparente, el nivel deabstraccin que ofrecen estos dos lenguajes con respecto al lenguaje mquinaes muy diferente. Mientras el lenguaje ensamblador es prcticamenteidntico al lenguaje mquina, el lenguaje Java, por el contrario, ofrececonstrucciones que se aproximan a construcciones complejas orientadas a serentendidas por un humano. A este tipo de lenguajes se les denominalenguajes de alto nivel. Como consecuencia, el proceso de traduccin yproduccin de un ejecutable es mucho ms fcil para el programa escrito en

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    0 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    11/15

    ensamblador que para el escrito en Java.

    1.5.1. Programacin en lenguaje ensamblador

    Los lenguajes de alto nivel ofrecen construcciones complejas y potentes paraescribir las rdenes de un programa que son luego traducidas a lenguajemquina y ejecutadas por el procesador. Por otro lado, el lenguajeensamblador no es ms que una representacin textual del lenguaje mquina.

    Qu ventaja tiene escribir un programa en lenguaje ensamblador pudiendoutilizar un lenguaje de alto nivel como Java con su posterior proceso decompilacin?

    Esta pregunta se ha venido haciendo desde la aparicin de los lenguajes deprogramacin de alto nivel. La propia aparicin de estos lenguajes vienemotivada, en parte, para evitar programas en lenguaje ensamblador puessuelen ser muy delicados de construir. Pero a pesar de ello, la programacinen ensamblador sigue vigente en nuestros das. Sus ventajas son mltiples taly como enumera Randall Bryant (ver [Bryant03]):

    Requiere un conjunto de tcnicas propias de cualquier ingeniero.

    Para programar en ensamblador es imprescindible entender elfuncionamiento de un procesador y esto a su vez facilita la comprensin

    de un sistema completo (procesador, memoria, dispositivos, etc.)

    Cada vez es ms comn encontrar dispositivos electrnicos quecontienen un procesador.

    Un diseador de procesadores necesita estar familiarizado con loslenguajes mquina y su utilizacin en programas.

    Entender el funcionamiento de un procesador y de su lenguaje mquinapermite desarrollar programas extremadamente eficientes y robustos.

    Es el nico lenguaje que entiende el hardware.

    1.5.2. Ejecucin de un programa en ensamblador

    Aunque el lenguaje ensamblador es prcticamente idntico al lenguajemquina, para crear un programa que sea ejecutado por el procesador, serequiere un proceso de traduccin o compilacin. Este proceso consta devarios pasos que pueden ser realizados por una o varias herramientas y quepueden producir ficheros temporales.

    En los ejemplos que se muestran a continuacin se asume que el ordenadorde trabajo ejecuta el sistema operativo Unix (o Linux). Dicho sistema incluyeun programa denominado intrprete de comandos que permite laintroduccin de rdenes textuales para la ejecucin de programas. La formahabitual de utilizar este programa es mediante una ventana en la que elintrprete muestra un mensaje denominado prompty espera a que el usuarioteclee la orden a ejecutar. Una vez introducido un comando, el intrprete loejecuta, y al terminar ofrece de nuevo el prompty espera el siguientecomando. En adelante se utilizar el smbolo $para representar el promptdelintrprete de comandos.

    La figura 1.7ilustra un ejemplo de cmo se obtiene un programa ejecutable apartir de un fichero que contiene un programa escrito en lenguajeensamblador. La compilacin la realiza el programa gcca la que se leproporciona una opcin para que el ejecutable se almacene en un fichero connombre programa(texto -o programa). La ejecucin de esta herramienta realiza lospasos que en la figura se representan por las cajas EnsambladoryEnlazador.

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    1 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    12/15

    Figura 1.7. Creacin de un ejecutable a partir de un programa enlenguaje ensamblador

    La herramienta gcces capaz de realizar mltiples tareas y una de las cualeses la traduccin y generacin de ejecutables a partir de lenguajeensamblador. La funcionalidad de esta herramienta se controla medianteopciones que se aaden a continuacin de su nombre tal y como ilustra lafigura 1.7. Adems de esta traduccin, gcctambin es capaz de ejecutar lospasos de ensamblado y entrelazado de forma separada e incluso combinar

    mltiples ficheros de cdigo para obtener un ejecutable.

    La ejecucin del programa obtenido no requiere herramienta alguna,simplemente se escribe su nombre a continuacin del prompty comienza suejecucin.

    1.6. Ejecucin de un programa

    En la seccin anterior se ha ejecutado el programa previamente escrito enlenguaje ensamblador mediante el comando:

    $ programa

    Este es mi primer programa

    $

    Cuando el usuario introduce el nombre del fichero ejecutable programa, elprocesador est ejecutando el intrprete de comandos. Cuando el usuariopulsa las teclas para escribir la palabra programael teclado notifica alprocesador de que se ha pulsado una tecla, y este obtiene la letra delcontrolador y la muestra por pantalla. Este proceso se repite para cada unade las letras mientras que el intrprete de comandos se encarga de almacenarla lnea entera en un lugar de memoria (ver figura 1.8).

    Figura 1.8. introduccin el comando programa

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    2 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    13/15

    Cuando se pulsa el retorno de carro, el procesador obtiene esa letra delcontrolador de teclado, la muestra por pantalla y la almacena en memoria.Pero el retorno de carro es la marca de final de comando que hace que elintrprete de comandos pase a procesar el comando. Para ello se explora lalnea leda de teclado y detecta que se trata del nombre de un ejecutable. Acontinuacin se obtiene el contenido de dicho ejecutable del disco duro y sealmacena en memoria (ver figura 1.9).

    Figura 1.9. Copia del ejecutable de disco a memoria

    Esta transferencia de datos se realiza porque el procesador necesita tener elcdigo y los datos necesarios para ejecutar un programa en memoriaprincipal en donde puede acceder a ellos directamente medianteinstrucciones de su lenguaje mquina. El acceso al disco duro, por el

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    3 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    14/15

    contrario, requiere la ejecucin de mltiples instrucciones mquina paracalcular el lugar del disco en el que se encuentran los datos solicitados y paraprogramar el controlador de disco para que obtenga dichos datos y losdeposite en memoria.

    Una vez que el programa est almacenado en memoria, el procesador tieneanotado el lugar en el que est su primera instruccin. El ltimo paso (trasuna serie de preparativos que no interesan en este momento) es pasar aejecutar la primera instruccin del programa tal y como se muestra en la

    figura 1.10que es push $mensaje. A partir de ese instante el procesador estejecutando las instrucciones escritas en el programa sobre los datosdefinidos.

    Figura 1.10. Ejecucin de la primera instruccin de un programa

    La ltima instruccin ejecutada es ret. Tras ello, el procesador contina con laejecucin del intrprete de comandos que a su vez est diseado para quecuando se termina la ejecucin de un programa se vuelva a mostrar el prompt(el smbolo $) por pantalla. A lo largo de los pasos descritos el procesador haejecutado del orden de miles de instrucciones mquina, y entre ellas, aquellascontenidas en el fichero programa.s.

    Programacin en ensambladorde la arquitectura IA-32

    Captulo 2. codificacin de lainformacin

    Copyright 2014, by the Contributing Authors. Esta obra se publica bajo unalicencia Creative Commons LicenseReconocer autora/Citar obra.Pardo, A. (03/06/2008). Captulo 1. Obtenido el 05/12/2014, desde el sitio Webde OCW - UC3M: http://ocw.uc3m.es/ingenieria-telematica/arquitectura-de-ordenadores/lecturas/html/int.html.

    archivado en:Arquitectura y Tecnologa de Computadores, Ejecucin

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    4 de 15 05/12/14 03

  • 7/24/2019 Ejecucin Programa

    15/15

    programas, Ordenadores

    eduCommons footer

    ContactoMapa del SitioAccesibilidadCondiciones de Uso

    Poltica de privacidad

    EntrarImpulsado por eduCommons

    Captulo 1 OCW - UC3M http://ocw.uc3m.es/ingenieria-telematica/arquit

    5 de 15 05/12/14 03