Está en la página 1de 10

INSTITUTO TECNOLGICO SUPERIOR DE

COATZACOALCOS
TRABAJO DE LA TERCERA UNIDAD:

TITULO DE LA UNIDAD:
GENERACIN DEL CODIGO OBJETO.
NOMBRE DEL ALUMNO:
GARCA ANTONIO OSWALDO.
NUMERO DE CONTROL:
11080870
CARRERA:
ING. EN SISTEMAS COMPUTACIONALES
MATERIA:
LENGUAJES Y AUTOMATAS ll
FECHA DE ENTREGA:
20/NOVIEMBRE/2014

INDICE
INTRUDUCCIN: ..................................................................................................................................................... 2
4.1 REGISTROS........................................................................................................................................................ 3
4.2 LENGUAJE ENSAMBLADOR .............................................................................................................................. 4
4.3 LENGUAJE MAQUINA ....................................................................................................................................... 7
4.4 ADMINISTRACIN DE MEMORIA ..................................................................................................................... 8
CONCLUSIONES .................................................................................................................................................... 10

INTRUDUCCIN:
El generador de cdigo objeto transforma el cdigo intermedio optimizado en cdigo objeto de bajo
nivel. Toma cdigo intermedio y genera cdigo objeto para la mquina considerada. Es la parte ms
2

prxima a la arquitectura de la mquina. Habitualmente, se escriben a mano desarrollo a medida


para cada mquina especfica.

4.1 REGISTROS
Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar
direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos
dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador
que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de
memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15, 14,13. 3, 2, 1,0), los
registros estn divididos en seis grupos los cuales tienen un fin especfico.

Los registros se dividen en:


Registros de segmento
Registros de apuntadores de instrucciones
Registros apuntadores
Registros de propsitos generales
Registro ndice
Registro de bandera.

Registros de uso general


AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en las operaciones
aritmticas y lgicas, despus de la operacin arroja un resultado.
3

BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos entre la memoria y el


procesador.
CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en bucles (LOOP), en
operaciones con cadenas (REP), y en desplazamientos (CL).
DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de multiplicacin y divisin
junto con Ax y en operaciones de entrada y salida de puertos, su mitad inferior DL contiene el
nmero de puertos.
Registros de segmento.
Un registro de segmento se utiliza para alinear en un lmite de prrafo o dicho de otra forma codifica
la direccin de inicio de cada segmento y su direccin en un registro de segmento supone cuatro bits
0 a su derecha.
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para
direccionamientos conocidos como el segmento actual. Los registros de segmento son: CS (cdigo),
DS (datos), SS (pila), ES, FS y GS.
Registro Apuntador de instrucciones. (IP)
El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la
siguiente instruccin que se ejecuta.
Registro ndice.
Los registros SI y DI estn disponibles para direccionamientos indexados y para sumas y restas.
Que son las operaciones de punta.
Registro de bandera.
Los registros de banderas sirven parar indicar el estado actual de la mquina y el resultado del
procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian
el estado de las banderas.

4.2 LENGUAJE ENSAMBLADOR


El lenguaje Assembly es un tipo de lenguaje de bajo nivel utilizado para escribir programas
informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada
arquitectura de computadoras legible por un programador.
Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza
en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se
pretenden rendimientos inusuales de los equipos.
Ensambladores. Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a
cdigos operativos, e interpretando los nombres simblicos para direcciones de memoria y otras
entidades. El uso de referencias simblicas es una caracterstica bsica de los ensambladores,
evitando tediosos clculos y direccionamiento manual despus de cada modificacin del programa.
La mayora de los ensambladores tambin incluyen facilidades para crear macros, a fin de generar
series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas.

Los ensambladores son por lo general ms fciles de programar que los compiladores de lenguajes
de alto nivel, y han estado disponibles desde la dcada de 1950. Los ensambladores modernos,
especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC
optimizan las instrucciones para explotar al mximo la eficiencia de segmentacin del CPU.
Los ensambladores de alto nivel ofrecen posibilidades de abstraccin que incluyen:
Control avanzado de estructuras. Procedimientos de alto nivel, declaracin de funciones. Tipos de
datos que incluyen estructuras, registros, uniones, clases y conjuntos. Sofisticado procesamiento de
macros.
Lenguaje. Un programa escrito en lenguaje Assembly consiste en una serie de instrucciones que
corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la memoria de una
computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instruccin binaria como
se expresa en cdigo maquina:
Binario: 10110000 01100001 (Hexadecimal: 0xb061) La representacin equivalente en Assembly es
ms fcil de recordar:
mov al, 061h Esta instruccin significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro al. El mnemnico mov es un cdigo de
operacin u opcode, elegido por los diseadores de la coleccin de instrucciones para abreviar
move (mover).- El opcode es seguido por una lista de argumentos o parmetros, completando una
instruccin de ensamblador tpica.
La transformacin del lenguaje Assembly en cdigo mquina la realiza un programa ensamblador, y
la traduccin inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto
nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del
ensamblador y el lenguaje mquina. Sin embargo, en algunos casos, un ensamblador puede proveer
pseudo instrucciones que se expanden en un cdigo de mquina ms extenso a fin de proveer la
funcionalidad necesaria. Por ejemplo, para un cdigo mquina condicional como si X mayor o igual
que, un ensamblador puede utilizar una pseudoinstruccin al grupo haga si menor que , y si = 0
sobre el resultado de la condicin anterior. Los ensambladores ms completos tambin proveen un
rico lenguaje de macros que se utiliza para generar cdigo ms complejo y secuencias de datos.
Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su
propio lenguaje Assembly. Los ordenadores difieren en el tipo y nmero de operaciones que
soportan; tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos
de datos en memoria. Aunque la mayora de las computadoras son capaces de cumplir
esencialmente las mismas funciones, la forma en que lo hacen difiere, y los respectivos lenguajes
Assembly reflejan tal diferencia.
Pueden existir mltiples conjuntos de mnemnicos o sintxis de Assembly para un mismo conjunto
de instrucciones, instanciados tpicamente en diferentes programas ensamblador. En estos casos, la
alternativa ms popular es la provista por los fabricantes, y usada en los manuales del programa.
Cdigo mquina (o lenguaje de mquina). El lenguaje de mquina est formado por instrucciones
sencillas, que -dependiendo de la estructura del procesador- pueden especificar:
5

Registros especficos para operaciones aritmticas, direccionamiento o control de funciones.


Posiciones de memoria especficas (offset). Modos de direccionamiento usados para interpretar
operandos. Las operaciones ms complejas se realizan combinando estas instrucciones sencillas,
que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo.
Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluyen:
Mover, llenar un registro con un valor constante, mover datos de una posicin de memoria a un
registro o viceversa, escribir y leer datos de dispositivos, computar, sumar, restar, multiplicar o dividir
los valores de dos registros, colocando el resultado en uno de ellos o en otro registro realizar
operaciones binarias, incluyendo operaciones lgicas (AND/OR/XOR/NOT) comparar valores entre
registros (mayor, menor, igual) afectar el flujo del programa saltar a otra posicin en el programa y
ejecutar instrucciones all saltar si se cumplen ciertas condiciones (IF) saltar a otra posicin, pero
guardar el punto de salida para retornar (CALL, llamada a subrutinas) Algunas computadoras
incluyen instrucciones complejas dentro de sus capacidades. Una sola instruccin compleja hace lo
mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo:
salvar varios registros en la pila de una sola vez mover grandes bloques de memoria operaciones
aritmticas complejas o de punto flotante (seno, coseno, raz cuadrada ) El nivel de lenguaje
Assembly tiene aspectos importantes de los niveles de microarquitectura, en los cuales se encuentra
(ISA y sistema operativo) estos dos se utilizan para la traduccin en lugar de la interpretacin.
Algunas caractersticas del lenguaje se describen a continuacin Los programas que sirven para
traducir algn programa para el usuario se llama traductores, el lenguaje en que est escrito el
programa original se llama lenguaje fuente, el lenguaje original que sea modificado se llama lenguaje
objeto.
Se usa la traduccin cuando se cuenta con un procesador (ya sea hardware o un intrprete) para el
lenguaje objeto pero no para el lenguaje fuente, Si la traduccin se realiza correctamente, la
ejecucin del programa traducido dar exactamente los mismos resultados que habra dado la
ejecucin del programa fuente. Hay dos diferencias entre traduccin e interpretacin, en la
traduccin no se ejecuta directamente el programa original, en el lenguaje fuente se convierte en un
programa equivalente llamado programa objeto o programa binario ejecutable y este funciona solo
cuando se ha acabado la traduccin.
El cdigo mquina, un simple patrn de bits, es hecho legible reemplazando valores crudos por
smbolos denominados mnemnicos. Se invent para facilitar la tarea de los primeros
programadores que hasta ese momento tenan que escribir directamente en cdigo binario. Antes
an era peor, ya que el cdigo de ceros y unos (el programa) deba introducirse en una tarjeta
perforada. La posicin ocupada por cada punto equivala a un 1 o a un 0 segn hubiera un hueco
o no. Lo cual supona una forma casi idntica en la que hoy se escriben los datos binarios en
soportes tales como los CDs y DVDs.
Mientras que una computadora reconoce la instruccin de mquina IA-32
10110000 01100001
Para los programadores de microprocesadores x86 es mucho ms fcil reconocer dicha instruccin
empleando lenguaje Assembly:
6

movb 061,%al
(Que significa mover el valor hexadecimal 61 (97 decimal) al registro al.)
Cada instruccin de la mquina se transforma en una nica instruccin en cdigo simblico.
Pero adems, para mejorar la legibilidad del programa, el cdigo simblico introduce instrucciones
adicionales, que no corresponden a ninguna instruccin de la mquina y que proporcionan
informacin. Se llaman pseudoinstrucciones.
El cdigo simblico puede parecer de difcil acceso, pero es ms fcil de recordar e interpretar que el
binario o el hexadecimal.
Los lenguajes simblicos no resuelven definitivamente el problema de cmo programar un ordenador
de la manera ms sencilla posible. Para utilizarlos, hay que conocer a fondo el microprocesador, los
registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas ms.
Adems, el lenguaje Assembly est demasiado ligado al microprocesador para que sea posible
escribir programas independientes de la mquina en que van a ejecutarse.
Este cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es preciso
traducirlo previamente. Pero la traduccin es un proceso mecnico y repetitivo, que se presta a su
realizacin por un programa de ordenador.
Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores
(assembler, en ingls), porque son capaces de ensamblar el programa traducido a partir de varias
piezas, procedimientos o subrutinas a cdigo binario (1 y 0) que entiende el procesador.

4.3 LENGUAJE MAQUINA


Un lenguaje de programacin de bajo nivel es el que proporciona poca o ninguna abstraccin del
microprocesador de un ordenador. Consecuentemente es fcilmente trasladado a lenguaje de
mquina.
La palabra bajo no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la
reducida abstraccin entre el lenguaje y el hardware.
Uso: ventajas e inconvenientes. En general se utiliza este tipo de lenguaje para programar
controladores (drivers).
La programacin en un lenguaje de bajo nivel como el lenguaje de la mquina o el lenguaje
simblico tiene ciertas ventajas:
Mayor adaptacin al equipo.
Posibilidad de obtener la mxima velocidad con mnimo uso de memoria.
Pero tambin tiene importantes inconvenientes:
Imposibilidad de escribir cdigo independiente de la mquina.
Mayor dificultad en la programacin y en la comprensin de los programas.
El programador debe conocer ms de un centenar de instrucciones.
Es necesario conocer en detalle la arquitectura de la mquina.
7

Caractersticas
Se trabaja a nivel de instrucciones, es decir, su programacin es al ms fino detalle. Est orientado a
la mquina.
Primera generacin
El lenguaje de programacin de primera generacin (por sus siglas en ingls, 1GL), es el lenguaje
de cdigo mquina. Es el nico lenguaje que un microprocesador entiende de forma nativa. El
lenguaje mquina no puede ser escrito o ledo usando un editor de texto, y por lo tanto es raro que
una persona lo use directamente.
Segunda generacin
El lenguaje de programacin de segunda generacin (por sus siglas en ingls, 2GL), es el lenguaje
ensamblador. Se considera de segunda generacin porque, aunque no es lenguaje nativo del
microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del
microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de
instrucciones).
Direccionamiento del lenguaje maquina
Es la forma en cmo se accede a la memoria. Recordar que un programa no puede ejecutarse sino
se encuentra en memoria principal. La forma de acceder a la memoria depende del
microprocesador, pero en general existen dos tipos de direccionamiento: directo e indirecto.
El direccionamiento directo tambin recibe el nombre de direccionamiento absoluto y el acceso a las
direcciones se hace de manera directa. El direccionamiento indirecto tambin recibe el nombre de
direccionamiento relativo y se basa a partir de una direccin genrica, generalmente el inicio del
programa.
Para acceder a una direccin relativa se suma a la direccin base el nmero de espacios de
memorias necesarias. El direccionamiento relativo hace a los programas relocalizables e
independientes. Si la direccin base es el inicio de la memoria fija el direccionamiento pasa a ser un
variante de direccionamiento absoluto.

4.4 ADMINISTRACIN DE MEMORIA


La administracin de la memoria es un proceso hoy en da muy importante, de tal modo que su mal
o buen uso tiene una accin directa sobre el desempeo de memoria.
En general un ensamblador tiene un administrador de memoria ms limitado que un compilador.
8

En la mayora de los lenguajes de programacin el uso de punteros no estaba vigilado por lo que se
tienen muchos problemas con el uso de memoria.
Los lenguajes ms recientes controlan el uso de punteros y tienen un programa denominado
recolector de basura que se encarga de limpiar la memoria no utilizada mejorando el desempeo.
La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, as como algunos
datos a emplear.
Una de las funciones bsicas que debe implementar un SO es la administracin de la Memoria
para tener un control sobre los lugares donde estn almacenados los procesos y datos que
actualmente se estn utilizando.
Se distinguen los siguientes propsitos del sistema de administracin de memoria:
Proteccin. Si varios programas comparten la memoria principal, se debera asegurar que el
programa no sea capaz de cambiar las ubicaciones no pertenecientes a l. Aunque una accin de
escritura puede tener efectos ms graves que una de lectura, esta ltima tampoco debera estar
permitida, para proporcionar algo de privacidad al programa.
Compartimiento. Este objetivo parece contradecir al anterior, sin embargo a veces es necesario para
los usuarios poder compartir y actualizar informacin (por ejemplo, en una base de datos) y, si se
organiza la tarea de entrada a la misma, se puede evitar el tener varias copias de la rutina.
Reubicacin. La tcnica de multiprogramacin requiere que varios programas ocupen la memoria al
mismo tiempo. Sin embargo no se sabe con anticipacin donde ser cargado cada programa por lo
que no es prctico usar direccionamiento absoluto de memoria.
Organizacin fsica. Debido al costo de una memoria principal rpida, sta se usa en conjunto con
una memoria secundaria mucho ms lenta (y por consiguiente, barata) a fines de extender su
capacidad.
Organizacin lgica. Aunque la mayor parte de las memorias son organizadas linealmente con un
direccionamiento secuencial, esto difcilmente concuerde con el camino seguido por el programa,
debido al uso de procedimientos, funciones, subrutinas, arreglos, etc.

CONCLUSIONES
En esta unidad vimos cmo se almacena, se ejecuta y se usa el cdigo del programa ya sea en
lenguaje ensamblado o mquina, uno de los cdigo principales es el cdigo objeto, tambin existen
los mecanismos de asignacin donde se pueden determinar la cantidad de particiones que sern
administradas por la memoria. Tambin tenemos los registros que es donde controlamos todo desde
el almacenamiento en memoria hasta las ejecuciones de los programas gracias a estos hemos
podido hacer mltiples cosas.

10

También podría gustarte