Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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 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
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.
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.
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