Anda di halaman 1dari 15

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

Cambiar a contenido. | Saltar a navegacin


Buscar

Buscar en el Sitio

Buscar

solo en la seccin actual


Bsqueda Avanzada

Secciones

Inicio
Cursos
Titulaciones
Sobre OCW
Ayuda
Contacto
Informes
Usted est aqu: Inicio Ingeniera Telemtica Arquitectura de ordenadores
(2008) Lecturas html Captulo 1

Captulo 1
Acciones de Documento

Contenidos de
Curso
Arquitectura
de
ordenadores
(2008)
Inicio
Programa
Bibliografa
Autor: Abelardo Pardo
Lectura
obligatoria
Captulo 1. Ejecucin de programas en un ordenador
Material de
clase
Ejercicios
Prcticas
Pruebas de
evaluacin
Gua de
aprendizaje
Profesorado
Tabla de contenidos
Download
This Course
1.1. Perspectivas de un ordenador
1.2. Niveles de abstraccin
1.2.1. Estudio de un procesador a nivel lenguaje mquina
1.3. Estructura de un ordenador
1.4. Denicin de un programa
1.5. El lenguaje ensamblador
1.5.1. Programacin en lenguaje ensamblador
1.5.2. Ejecucin de un programa en ensamblador
1.6. Ejecucin de un programa

Reutilizar
Curso
Descargar
este curso

Ejecucin de programas en un
ordenador

1 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

En este captulo se describen las diferentes formas posibles de percibir un


ordenador y su funcionamiento. El usuario comn lo percibe como una
mquina capaz de ejecutar ciertas rdenes o comandos que se le comunican
utilizando los dispositivos tales como teclado, ratn, etc. Pero para la persona
con nociones bsicas de electrnica digital, el ordenador es un circuito
complejo que permite la ejecucin de ciertos comandos sencillos. Cmo es
posible que el mismo objeto sea percibido de forma tan diferente? Esto es
debido a que existen varios niveles desde los que se puede analizar la
estructura de un ordenador. Cuando el usuario convencional introduce un
comando por teclado, el ordenador lo ejecuta mediante un nmero muy
elevado de instrucciones bsicas que permiten la comunicacin con los
diferentes dispositivos para obtener los datos as como las operaciones
bsicas en el interior del procesador. Se ver cmo tareas comunes
solicitadas por un usuario requieren la participacin de varias partes del
ordenador.

1.1. Perspectivas de un ordenador


Un ordenador es un objeto que se puede percibir de mltiples formas, y todas
ellas correctas. Cuando un usuario se sienta frente a uno de ellos y comienza
a trabajar, el ordenador se percibe como un objeto que permite manipular una
serie 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 del
programa de chat, el intercambio de mensajes con un conjunto de personas
que a su vez estn utilizando ese mismo programa en otros ordenadores en
otros lugares. Pero adems de utilizar el programa de chat, no se debe olvidar
que se se est utilizando igualmente la pantalla para visualizar los mensajes,
el teclado para introducir su texto, y posiblemente el ratn para seleccionar
iconos o ventanas en la pantalla.
Otro ejemplo de utilizacin del ordenador es cuando un usuario abre un
chero de texto y comienza a escribir una carta. El ordenador facilita el
trabajo de escritura y almacenamiento de este documento que puede incluir
elementos especiales tales como imgenes, diferentes tipos de letras, grcas
con datos, etc. Para realizar esta tarea tambin se utiliza la pantalla para
visualizar los datos, el teclado para introducir texto, y el ratn para realizar
tareas de seleccin y manipulacin de texto. Si este documento creado de
forma electrnica se necesita en papel, el ordenador permite enviarlo a una
impresora que se encarga de plasmar en papel lo que hasta el momento se
haba mostrado en pantalla.
Tanto la utilizacin de un programa de chat como la redaccin e impresin de
una carta son tareas que han sido previamente introducidas o programadas
en el ordenador y por tanto puede ejecutarlas cuando el usuario as lo
requiera. Pero los ordenadores poseen una propiedad que los hace realmente
potentes: se pueden programar con tareas nuevas. Es decir, si un ordenador
no dispone del programa necesario para realizar una tarea, y sta es
programable, existen lenguajes de programacin tales como Java que
permiten escribir estos programas e instalarlos. A partir de ese momento, el
ordenador podr ejecutar el programa escrito tantas veces como el usuario
desee.
Pero estos lenguajes de programacin, a pesar de que sirven para conseguir
que el ordenador realice una tarea concreta, no son los que el ordenador
entiende directamente. Antes de instalar un programa es preciso traducirlo al
lenguaje bsico que se maneja internamente. A este proceso de traduccin se
le denomina compilacin. Segn el diccionario de la lengua espaola, la
palabra compilar signica preparar un programa en el lenguaje mquina a
partir de otro programa de ordenador escrito en otro lenguaje. Una vez que
el programa ha sido traducido o compilado, el ordenador ya puede ejecutarlo.
Esta forma de utilizar un ordenador, como un objeto al que podemos darle

2 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

rdenes precisas sobre tareas, mediante un programa escrito en un lenguaje


de programacin, y que se traduce al lenguaje mquina interno del
ordenador, es lo que denominaremos la perspectiva del programador. La
gura 1.1 muestra de forma grca los elementos de la perspectiva del
programador.
Figura 1.1. Perspectiva del programador

Pero adems de los ejemplos cotidianos de uso, es posible percibir un


ordenador desde una perspectiva totalmente diferente. En efecto, si se
dispone de nociones bsicas de electrnica digital, se sabe que en su interior
hay una serie de circuitos electrnicos interconectados entre s. Si se abre la
caja de un ordenador puede verse todo un conjunto de pequeos circuitos
interconectados por innidad de cables que atraviesan una supercie rgida
conocido genricamente con el nombre de placa. Los circuitos, a su vez
estn diseados utilizando puertas lgicas, que a su vez constan de un
conjunto de transistores. La manera en que dichas puertas lgicas estn
conectadas permite realizar operaciones aritmticas bsicas tales como
sumas, restas, multiplicaciones, divisiones, etc. Al igual que todo circuito
electrnico, se necesita un cierto voltaje para que funcione que es
proporcionado por otro circuito que es conocido como la fuente de
alimentacin y que forma parte del ordenador.
Si se observa con ms detalle la estructura interna de un ordenador, es
posible distinguir algunos de sus componentes. Los discos duros suelen tener
aspecto de caja metlica rectangular con conectores en uno de sus lados.
Puede verse cmo algunos de los conectores que aparecen en la parte
posterior de la caja del ordenador estn conectados a pequeas placas con
circuitos impresos que a su vez estn conectadas a una placa mayor que
ocupa casi la totalidad de la carcasa.
De todos los circuitos o componentes presentes en el ordenador, hay uno
especialmente importante. Se distingue, en la mayora de los ordenadores,
porque es el circuito de mayor tamao en el equipo y requiere su propio
ventilador para evitar recalentamientos por lo que no suele estar
directamente visible. Este circuito es el que se conoce con el nombre de
procesador, y es el responsable de dirigir, controlar y ejecutar las principales
tareas que realiza el ordenador. La caracterstica fundamental de este
procesador es que puede ejecutar programas en lenguaje mquina. Por tanto,
el lenguaje mquina es aqul que consta de las instrucciones o comandos que
son entendidos por el procesador.
Recordemos que una de las principales capacidades del ordenador es la de
ejecutar programas, y una gran parte de esta capacidad se debe a la
presencia del procesador. Esta perspectiva del ordenador como un conjunto
de circuitos electrnicos interconectados entre s se denominar la
perspectiva del diseador. La gura 1.2 muestra algunos de los elementos de
los que consta esta perspectiva.
Figura 1.2. Perspectiva del diseador

3 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

Una vez vistas estas dos perspectivas posibles, cmo puede un equipo
formado 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 debe
ser tratada en diferentes fases. En lo que resta de este documento se ofrece
parte de la respuesta a dicha pregunta mediante la explicacin del
funcionamiento de un procesador desde el punto de vista de su programacin
en lenguaje mquina. La programacin en lenguajes como Java es posible
porque los programas se compilan y se obtiene el lenguaje mquina que el
procesador es capaz de ejecutar.
El objetivo, por tanto es ofrecer una tercera visin de un ordenador que se
encuentra entre la perspectiva del diseador y la de usuario. El estudio del
ordenador se centra alrededor del procesador y su lenguaje mquina, que es
capaz de ofrecer la funcionalidad necesaria para ejecutar los programas
diseados en lenguajes tales como Java. La gura 1.3 ilustra la nueva
perspectiva a estudiar con respecto a las dos anteriores.
Figura 1.3. Diferentes perspectivas de un ordenador

1.2. Niveles de abstraccin


Generalmente, en entornos cientcos, cuando se estudia un problema
demasiado complejo se utilizan mecanismos que permitan simplicarlo pero
que a la vez se muestren sus aspectos ms relevantes. A este proceso de
simplicacin, en el que ciertos aspectos se ocultan reduciendo as su
complejidad, se le denomina abstraccin
Para ilustrar el proceso de abstraccin se puede tomar como ejemplo el
problema de buscar un edicio en cualquier lugar del mundo mediante su
direccin de correo postal. Las direcciones de correo postal incluyen el pas
en el que se encuentra el destinatario. En un primer nivel de bsqueda, se
toma la informacin referida a todos los pases del mundo y se selecciona el
pas especicado en la direccin. En una segunda fase, se obtiene la
informacin sobre la divisin interna de un pas (estas divisiones pueden
tener diferentes nombres tales como comunidades, provincias,
departamentos, estados, etc.) Una vez localizada la unidad territorial se debe
seleccionar una ciudad. Para ello, tan slo es preciso obtener la informacin
de ciudades incluidas en la unidad territorial bajo consideracin y localizar la
del destinatario. Finalmente, dentro de la ciudad se debe obtener la
informacin sobre las calles y sus nmeros para conocer la posicin exacta

4 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

del edicio que se busca.


La informacin manipulada durante este proceso se puede dividir en varias
categoras:
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 ellas
contiene detalles de la siguiente categora. La informacin sobre todos los
pases del mundo puede incluir adems todas las divisiones en unidades
territoriales. De igual forma, los datos sobre todas las ciudades de una unidad
territorial puede incluir todas sus calles. Sin embargo, la solucin del
problema de localizar un edicio se simplica sustancialmente si los datos
estn divididos en las categoras antes mencionadas, es decir, una categora
incluye la informacin de su nivel e ignora o abstrae los datos del resto de
categoras.
Se puede decir que como cada una de estas categoras ignora detalles de las
categoras siguientes, simplica la informacin acerca de la localizacin de
edicios en el mundo pero, a la vez, conservando los aspectos ms relevantes.
Cada una de estas categoras puede ser considerada como un nivel de
abstraccin.
Generalizando este concepto, los niveles de abstraccin son diferentes
visiones de una misma entidad relacionadas de tal forma que cada una de
ellas provee ms detalle que el nivel anterior, pero ignora detalles del nivel
siguiente. Como conclusin, entre los niveles de abstraccin se puede
establecer una relacin con respecto a dos aspectos: la complejidad y el
detalle. La gura 1.4 ilustra un ejemplo con cuatro niveles y cmo la
complejidad y el detalle se relacionan de manera inversa. A mayor nivel de
complejidad, mayor nmero de detalles, y cuanto menos complejo es el
resultado 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 de


un mapa topogrco. Un mapa es una representacin de algunos de los
aspectos contenidos en una determinada rea. El tamao del mapa y el de
dicha rea estn relacionados mediante un factor de escala. Es posible tener
mapas de la misma rea pero realizados a diferente factor de escala. Estos
mapas ofrecen diferentes visiones del lugar pero con diferentes niveles de
complejidad y detalle.
La observacin clave de estos dos ejemplos es que la resolucin de problemas
en un mbito concreto es posible representando la realidad mediante un nivel
de abstraccin adecuado. Por ejemplo, si una empresa de distribucin de
mercancas a nivel mundial necesita decidir dnde situar sus centros de

5 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

distribucin, no es preciso que utilice la informacin de qu nmeros hay en


cada calle. Igualmente, un ingeniero que desea disear una autopista no
puede utilizar un mapa con una escala tan grande que no se perciban lo
suciente los accidentes orogrcos.

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 contiene
diferentes tipos de detalles. A nivel ms detallado, un procesador funciona
como un circuito electrnico en el que las intensidades de corriente y los
voltajes van cambiando en diferentes partes consiguiendo as su correcto
funcionamiento. Estas corrientes y voltajes son, a su vez, movimientos de
electrones a nivel atmico del material semiconductor del que est hecho el
procesador. En el otro extremo se puede estudiar el ordenador en su totalidad
a travs de las tareas que puede ejecutar y la comunicacin a travs de sus
dispositivos.
De entre estos dos niveles de abstraccin, el estudio que se presenta en este
documento est realizado a nivel del lenguaje mquina que el procesador es
capaz de ejecutar. Para claricar ms los detalles que forman parte de este
nivel los compararemos con los niveles de abstraccin adyacentes.
En un nivel ms abstracto se puede situar la ejecucin de programas en
lenguajes de alto nivel tales como Java. Las instrucciones que se escriben son
ms sosticadas (bucles, condicionales, comparaciones, etc) y se cien a una
sintaxis especca de dicho lenguaje. Ntese que un mismo procesador puede
ejecutar programas escritos en diferentes lenguajes de programacin. Tan
slo es preciso utilizar un procedimiento de compilacin adecuado para
traducir estos lenguajes al lenguaje mquina del procesador. A lo largo de los
siguientes captulos se harn breves incursiones desde el lenguaje mquina
hasta este nivel de abstraccin con el propsito de ilustrar el proceso de
compilacin.
En un nivel de abstraccin ms detallado del lenguaje mquina se encuentra
la estructura interna del procesador. Estos detalles son imprescindibles para
entender cmo se ejecutan paso a paso las diferentes instrucciones que
forman parte del lenguaje mquina. Basndose en la estructura interna de un
procesador se puede entender, por ejemplo, el tiempo que tarda ste en
ejecutar una determinada instruccin as como los circuitos que utiliza.
Anlogamente al nivel de abstraccin anterior, en los siguientes captulos se
mencionarn algunos detalles de este nivel para facilitar la comprensin de
cmo el procesador ejecuta las instrucciones en lenguaje mquina.

1.3. Estructura de un ordenador


La estructura interna o arquitectura de un ordenador vara enormemente de
unos 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 a
realizar tareas relativas a una persona, puede tener una estructura diferente
a 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 hoy
en da en el mercado de ordenadores, se ha optado por presentar un modelo
simplicado de la arquitectura de un ordenador personal, tambin conocido
como PC que es la abreviatura del trmino ingls personal computer. La
gura 1.5 ilustra este modelo.
Figura 1.5. Estructura de un ordenador

6 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

Todo ordenador tiene, como parte fundamental de su arquitectura, al menos


un procesador. En su interior se encuentran una serie de elementos bsicos
tales como registros (capaces de almacenar pequeas cantidades de
informacin), unidad aritmtico-lgica o UAL (capaz de realizar simples
operaciones aritmticas), unidad de control, etc. Este procesador se comunica
con el resto del ordenador a travs de lo que denominaremos el bus del
sistema.
La comunicacin entre el procesador y el resto del equipo se puede dividir a
su vez en dos categoras: la conexin con la memoria (tambin llamada
memoria principal o memoria RAM), y la conexin con los dispositivos de
entrada salida (E/S). El circuito representado en la gura 1.5 por el nombre
Puente E/S es el encargado de separar los datos de estas categoras. La
conexin con la memoria RAM se realiza a travs del bus de memoria. Esta
memoria es capaz de almacenar informacin mientras el equipo est
encendido. Al apagar el equipo, los datos almacenados en este dispositivo se
pierden, por este motivo, tambin se le conoce como memoria voltil.
Los datos dirigidos a los dispositivos de entrada/salida se envan a travs del
bus de entrada/salida (o bus E/S). Este bus se utiliza para conectar todos los
dispositivos auxiliares que necesita el ordenador para su funcionamiento.
Dichos dispositivos no se conectan directamente el bus, sino a un circuito
encargado de gestionar su comunicacin denominado controlador.
Los dispositivos ms comunes presentes en la mayora de los ordenadores
personales son el teclado, el ratn, la pantalla y el disco duro. Teclado y ratn
son dos dispositivos de entrada de datos (el ordenador slo recibe datos de
ellos), la pantalla es de salida de datos, y el disco duro es de entrada y salida
de datos (se realizan operaciones de lectura y escritura). Este disco tiene una
funcionalidad similar a la memoria RAM, es decir, almacenar datos, pero con
la diferencia de que si se apaga el equipo, la informacin permanece
almacenada sin alteraciones. A los dispositivos con esta propiedad (disco
duro, CD-ROM, DVD, etc.) se les denomina memoria no voltil.
Una de las caractersticas que ha contribuido a que esta arquitectura haya
alcanzado un nivel tan alto de popularidad es la posibilidad de conectar de
forma sencilla dispositivos adicionales. El bus de entrada/salida est
preparado para conectar ms dispositivos y as dotar al ordenador de mayor
capacidad. De esta forma, el ordenador se puede completar con una

7 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

impresora, un scanner, discos duros adicionales, lector/grabador de DVDs,


etc. La mayora de estos dispositivos se conectan al ordenador ya sea a travs
de conectores especcamente incluidos a tal efecto (tal es el caso de la
conexin de una impresora al puerto paralelo) o a travs de las clavijas de
expansin.

1.4. Denicin de un programa


Un programa es un conjunto de rdenes o instrucciones por las que un
ordenador realiza diversas funciones. Los programas estn escritos en un
lenguaje de programacin mediante la utilizacin de un editor.
Tmese como ejemplo el programa escrito en el lenguaje de programacin
Java que se muestra en el ejemplo 1.1. En l se pueden apreciar detalles
comunes 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, las


palabras que se utilizan y su signicado estn estipuladas por la denicin del
lenguaje de programacin Java. Todo programa dene un conjunto de rdenes
a ejecutar sobre un conjunto de datos, por lo que adems de las rdenes,
tambin se incluyen en un programa la denicin de los datos a utilizar (en el
ejemplo es la denicin de una variable con nombre mensaje).
El primer paso para que el ordenador ejecute las rdenes contenidas en un
programa es escribir su contenido en un chero. En el caso concreto de Java,
este chero ha de contener lo que se denomina texto plano, es decir, un
chero que contenga nicamente el texto sin informacin de formato,
mrgenes, imgenes, etc. Supongamos que este chero tiene por nombre
Programa.java.
El siguiente paso es lo que se denomina la compilacin del programa y
consiste en traducir el chero Programa.java al lenguaje que el procesador es
capaz de entender, es decir, a lenguaje mquina. En general, este proceso de
traduccin consiste en varios pasos o etapas que son realizadas por varios
programas diferentes. Existen lenguajes de programacin y ordenadores en el
que el proceso de compilacin se realiza en un nico paso y por un nico
programa, 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 proceso
de traduccin a lenguaje mquina se ilustra en la gura 1.6.
Figura 1.6. Creacin de un ejecutable en Java

8 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

En general, no todos los cheros temporales resultantes de las diferentes


etapas de traduccin o compilacin son visibles al usuario. En el caso de un
programa Java, tal y como ilustra la gura 1.6 se utiliza la herramienta javac
que a partir de un chero fuente produce un chero temporal con extensin
.class. A partir de este chero, la herramienta java realiza la traduccin que
falta y procede a su ejecucin. En este ejemplo, ambas herramientas se
invocan a travs de un intrprete de comandos.

1.5. El lenguaje ensamblador


El procesador que contiene todo ordenador es capaz de ejecutar un conjunto
de instrucciones denidas en el lenguaje mquina. La forma de denir estas
instrucciones, 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 codicar
mediante ceros y unos de una forma especca 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 lenguaje
ensamblador para que sean ejecutados por el procesador. Pero escribir un
programa de estas caractersticas es impensable, puesto que no sera ms
que una sucesin de ceros y unos codicando los datos y las rdenes del
programa. Para facilitar esta tarea se dene el lenguaje ensamblador que no
es ms que una representacin de las instrucciones y datos del lenguaje
mquina pero utilizando letras y nmeros en lugar de la lgica binaria (ceros
y unos).
La traduccin del lenguaje ensamblador a lenguaje mquina se realiza con un
programa encargado de producir la codicacin en ceros y unos del programa
para su posterior ejecucin. Dada la proximidad entre estos dos lenguajes, a
menudo sus nombres se utilizan de manera indistinta.
El ejemplo 1.2 muestra un sencillo programa escrito en lenguaje ensamblador
de la arquitectura IA-32. En los siguientes captulos se hace un estudio ms
detallado del lenguaje mquina de esta arquitectura as como de sus
principales caractersticas. Por el momento, es suciente saber que el cdigo
mquina mostrado corresponde a dicha arquitectura. De la mera inspeccin
visual de este programa se pueden deducir varios aspectos de la

9 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

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
.globl main

# Comienza la seccin de cdigo


# Declaracin de main como smbolo
# global

main:
push %ebp
mov %esp, %ebp

# Bloque de activacin

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


pop %ebp
ret

# Deshacer bloque de activacin


# termina el programa

El programa consta de dos secciones claramente diferenciadas. La primera de


ellas comienza a partir de la palabra .data y es la seccin de datos tal y como
lee el comentario que se encuentra a continuacin. En ella podemos
encontrar la denicin de los datos que van a ser utilizados por el programa.
Ntese cmo se dene un mensaje mediante la utilizacin de los smbolos
mensaje y .asciz.
La segunda seccin comienza a partir de la palabra .text como indica el
comentario en la misma lnea. A continuacin encontramos una lnea en la
que el smbolo main se dene como global (sin saber qu quiere decir esto). Lo
ms revelador del programa se encuentra a partir de este punto, pues
aparece la palabra main seguida por cuatro lneas que se corresponden con
cuatro instrucciones del lenguaje mquina del procesador.
El punto del cdigo en el que se encuentra la palabra main: corresponde con el
punto de arranque del programa. A continuacin, se encuentran varias
instrucciones mquina. Estas instrucciones son extremadamente cortas,
constan de una nica palabra (tal es el caso de la ltima lnea) o de una
palabra seguida de una o dos ms separadas por comas. Estas instrucciones
pueden incluir palabras que aparecen previamente en el texto (por ejemplo
push $mensaje), nmeros (por ejemplo add $4, %esp), as como otros
identicadores.
Adems, y mediante la interpretacin de los comentarios incluidos al nal de
cada lnea, se puede deducir que el programa imprime un mensaje por
pantalla, y para eso utiliza una funcin denominada printf.
Si se compara el programa ensamblador del ejemplo 1.2 con el programa Java
del ejemplo 1.1, las diferencias son aparentes. La sintaxis, el tipo de
instrucciones y la denicin de datos son radicalmente diferentes. Lo que s
tienen ambos programas en comn es que contienen un conjunto de rdenes
y los datos utilizados. Aunque en estos dos ejemplo no es aparente, el nivel de
abstraccin que ofrecen estos dos lenguajes con respecto al lenguaje mquina
es muy diferente. Mientras el lenguaje ensamblador es prcticamente
idntico al lenguaje mquina, el lenguaje Java, por el contrario, ofrece
construcciones que se aproximan a construcciones complejas orientadas a ser
entendidas por un humano. A este tipo de lenguajes se les denomina
lenguajes de alto nivel. Como consecuencia, el proceso de traduccin y
produccin de un ejecutable es mucho ms fcil para el programa escrito en

10 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

ensamblador que para el escrito en Java.

1.5.1. Programacin en lenguaje ensamblador


Los lenguajes de alto nivel ofrecen construcciones complejas y potentes para
escribir las rdenes de un programa que son luego traducidas a lenguaje
mquina y ejecutadas por el procesador. Por otro lado, el lenguaje
ensamblador no es ms que una representacin textual del lenguaje mquina.
Qu ventaja tiene escribir un programa en lenguaje ensamblador pudiendo
utilizar un lenguaje de alto nivel como Java con su posterior proceso de
compilacin?
Esta pregunta se ha venido haciendo desde la aparicin de los lenguajes de
programacin de alto nivel. La propia aparicin de estos lenguajes viene
motivada, en parte, para evitar programas en lenguaje ensamblador pues
suelen ser muy delicados de construir. Pero a pesar de ello, la programacin
en ensamblador sigue vigente en nuestros das. Sus ventajas son mltiples tal
y como enumera Randall Bryant (ver [Bryant03]):
Requiere un conjunto de tcnicas propias de cualquier ingeniero.
Para programar en ensamblador es imprescindible entender el
funcionamiento 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 que
contienen un procesador.
Un diseador de procesadores necesita estar familiarizado con los
lenguajes mquina y su utilizacin en programas.
Entender el funcionamiento de un procesador y de su lenguaje mquina
permite desarrollar programas extremadamente ecientes 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 lenguaje
mquina, para crear un programa que sea ejecutado por el procesador, se
requiere un proceso de traduccin o compilacin. Este proceso consta de
varios pasos que pueden ser realizados por una o varias herramientas y que
pueden producir cheros temporales.
En los ejemplos que se muestran a continuacin se asume que el ordenador
de trabajo ejecuta el sistema operativo Unix (o Linux). Dicho sistema incluye
un programa denominado intrprete de comandos que permite la
introduccin de rdenes textuales para la ejecucin de programas. La forma
habitual de utilizar este programa es mediante una ventana en la que el
intrprete muestra un mensaje denominado prompt y espera a que el usuario
teclee la orden a ejecutar. Una vez introducido un comando, el intrprete lo
ejecuta, y al terminar ofrece de nuevo el prompt y espera el siguiente
comando. En adelante se utilizar el smbolo $ para representar el prompt del
intrprete de comandos.
La gura 1.7 ilustra un ejemplo de cmo se obtiene un programa ejecutable a
partir de un chero que contiene un programa escrito en lenguaje
ensamblador. La compilacin la realiza el programa gcc a la que se le
proporciona una opcin para que el ejecutable se almacene en un chero con
nombre programa (texto -o programa). La ejecucin de esta herramienta realiza los
pasos que en la gura se representan por las cajas Ensamblador y
Enlazador.

11 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

Figura 1.7. Creacin de un ejecutable a partir de un programa en


lenguaje ensamblador

La herramienta gcc es capaz de realizar mltiples tareas y una de las cuales


es la traduccin y generacin de ejecutables a partir de lenguaje
ensamblador. La funcionalidad de esta herramienta se controla mediante
opciones que se aaden a continuacin de su nombre tal y como ilustra la
gura 1.7. Adems de esta traduccin, gcc tambin es capaz de ejecutar los
pasos de ensamblado y entrelazado de forma separada e incluso combinar
mltiples cheros de cdigo para obtener un ejecutable.
La ejecucin del programa obtenido no requiere herramienta alguna,
simplemente se escribe su nombre a continuacin del prompt y comienza su
ejecucin.

1.6. Ejecucin de un programa


En la seccin anterior se ha ejecutado el programa previamente escrito en
lenguaje ensamblador mediante el comando:
$ programa
Este es mi primer programa
$

Cuando el usuario introduce el nombre del chero ejecutable programa, el


procesador est ejecutando el intrprete de comandos. Cuando el usuario
pulsa las teclas para escribir la palabra programa el teclado notica al
procesador de que se ha pulsado una tecla, y este obtiene la letra del
controlador y la muestra por pantalla. Este proceso se repite para cada una
de las letras mientras que el intrprete de comandos se encarga de almacenar
la lnea entera en un lugar de memoria (ver gura 1.8).
Figura 1.8. introduccin el comando programa

12 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

Cuando se pulsa el retorno de carro, el procesador obtiene esa letra del


controlador de teclado, la muestra por pantalla y la almacena en memoria.
Pero el retorno de carro es la marca de nal de comando que hace que el
intrprete de comandos pase a procesar el comando. Para ello se explora la
lnea leda de teclado y detecta que se trata del nombre de un ejecutable. A
continuacin se obtiene el contenido de dicho ejecutable del disco duro y se
almacena en memoria (ver gura 1.9).
Figura 1.9. Copia del ejecutable de disco a memoria

Esta transferencia de datos se realiza porque el procesador necesita tener el


cdigo y los datos necesarios para ejecutar un programa en memoria
principal en donde puede acceder a ellos directamente mediante
instrucciones de su lenguaje mquina. El acceso al disco duro, por el

13 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

contrario, requiere la ejecucin de mltiples instrucciones mquina para


calcular el lugar del disco en el que se encuentran los datos solicitados y para
programar el controlador de disco para que obtenga dichos datos y los
deposite en memoria.
Una vez que el programa est almacenado en memoria, el procesador tiene
anotado el lugar en el que est su primera instruccin. El ltimo paso (tras
una serie de preparativos que no interesan en este momento) es pasar a
ejecutar la primera instruccin del programa tal y como se muestra en la
gura 1.10 que es push $mensaje. A partir de ese instante el procesador est
ejecutando las instrucciones escritas en el programa sobre los datos
denidos.
Figura 1.10. Ejecucin de la primera instruccin de un programa

La ltima instruccin ejecutada es ret. Tras ello, el procesador contina con la


ejecucin del intrprete de comandos que a su vez est diseado para que
cuando 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 ha
ejecutado del orden de miles de instrucciones mquina, y entre ellas, aquellas
contenidas en el chero programa.s.

Programacin en ensamblador
de la arquitectura IA-32

Captulo 2. codicacin de la
informacin

Copyright 2014, by the Contributing Authors. Esta obra se publica bajo una
licencia Creative Commons License
Reconocer autora/Citar obra.
Pardo, A. (03/06/2008). Captulo 1. Obtenido el 05/12/2014, desde el sitio Web
de OCW - UC3M: http://ocw.uc3m.es/ingenieria-telematica/arquitecturade-ordenadores/lecturas/html/int.html.
archivado en: Arquitectura y Tecnologa de Computadores, Ejecucin

14 de 15

05/12/14 03:43

Captulo 1 OCW - UC3M

http://ocw.uc3m.es/ingenieria-telematica/arquitec...

programas, Ordenadores
eduCommons footer

Contacto
Mapa del Sitio
Accesibilidad
Condiciones de Uso
Poltica de privacidad
Entrar
Impulsado por eduCommons

15 de 15

05/12/14 03:43

Anda mungkin juga menyukai