Generacion De Codigo Objeto
Enviado por AngieMarquez21 • 12 de Mayo de 2015 • 1.867 Palabras (8 Páginas) • 254 Visitas
INTRODUCCIÓN
El generador de código objeto transforma el código intermedio optimizado en código objeto de bajo nivel. Toma código intermedio y genera código objeto para la máquina considerada. Es la parte más próxima a la arquitectura de la máquina. Habitualmente, se escriben a mano, “desarrollo a medida” para cada máquina específica.
El lenguaje máquina fue el primero que empleo el hombre para la programación de
las primeras computadoras.
4.1 REGISTROS
Los registros del procesador se emplean para controlar instrucciones en ejecución,
manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los
registros son espacios físicos dentro del microprocesador con capacidad de 4 bits
hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son
direccionales por medio de una viñeta, que es una dirección de memoria. Los bits,
por conveniencia, se numeran de derecha a izquierda (15, 14, 13…. 3, 2, 1, 0), los
registros están divididos en seis grupos los cuales tienen un fin específico. Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo. Algunos registros de propósito general son utilizados para cierto tipo de funciones. Existen registros acumuladores, puntero de instrucción, de pila, etc
Los registros se dividen en:
• Registros de segmento
• Registros de apuntadores de instrucciones
• Registros apuntadores
• Registros de propósitos 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 aritméticas y lógicas, después de la operación arroja un resultado.
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
multiplicación y división junto con Ax y en operaciones de entrada y salida de
puertos, su mitad inferior DL contiene el número de puertos.
Registros de segmento.
Un registro de segmento se utiliza para alinear en un límite de párrafo o dicho de
otra forma codifica la dirección de inicio de cada segmento y su dirección 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 (código), 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 dirección de la siguiente instrucción que se ejecuta.
Registro índice
Los registros SI y DI están 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 máquina y el
resultado del procesamiento, Cuando algunas instrucciones piden comparaciones
o cálculos aritméticos cambian el estado de las banderas.
4.2 LENGUAJE ENSAMBLADOR
La comunicación en lenguaje de máquina es particular de cada procesador que se
usa, y programar en este lenguaje es muy difícil y tedioso, por lo que se empezó a
buscar mejores medios de comunicación con ésta. Los lenguajes ensambladores
tienen ventajas sobre los lenguajes de máquina. Ahorran tiempo y requieren
menos atención a detalles.
El lenguaje Assembly es un tipo de lenguaje de bajo nivel utilizado para escribir
programas informáticos, y constituye la representación más directa del código
máquina específico para cada arquitectura de computadoras legible por un
programador.
Fue usado ampliamente en el pasado para el desarrollo de software, pero
actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se
requiere la manipulación directa del hardware o se pretenden rendimientos
inusuales de los equipos.
Ensambladores
Un ensamblador crea código objeto traduciendo instrucciones
mnemónicas a códigos operativos, e interpretando los nombres simbólicos para
direcciones de memoria y otras entidades. El uso de referencias simbólicas es una
característica básica de los ensambladores, evitando tediosos cálculos y
direccionamiento manual después de cada modificación del programa. La mayoría
de los ensambladores también 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 más fáciles de programar que los
compiladores de lenguajes de alto nivel, y han estado disponibles desde la década
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 máximo la eficiencia de segmentación del CPU.
Los ensambladores de alto nivel ofrecen posibilidades de abstracción que
incluyen:
Control avanzado de estructuras. Procedimientos de alto nivel, declaración de
funciones. Tipos de datos que incluyen estructuras, registros, uniones, clases y
conjuntos. Sofisticado procesamiento de macros.
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 instrucción binaria como se expresa en código
maquina:
Binario: 10110000 01100001 (Hexadecimal: 0xb061)
...