martes, 29 de noviembre de 2016

CÓDIGO OBJETO

Definiciòn de còdigo Objeto: 

Conjunto de instrucciones y datos escritos en un lenguaje que entiende el ordenador directamente: binario o código máquina. Provienen de la traducción de cierto código fuente, es un fragmento del programa final y es específico de la plataforma de ejecución.

El código objeto es el resultado de la compilación del código fuente. Puede ser en lenguaje máquina o bytecode, y puede distribuirse en varios archivos que corresponden a cada código fuente compilado.

En programación, cuando se desarrolla un programa, en la fase de codificación el compilador traducirá el código fuente a código máquina, también llamado código objeto, siempre y cuando, el propio compilador no detecte ningún error en dicho código fuente.



Aspectos generales


Administración de memoria: La correspondencia entre los nombres del programa fuente con direcciones de objetos de datos en la memoria durante la ejecución la realiza la etapa inicial en cooperación con el generador de código. Las entradas en la Tabla de Símbolos se van creando conforme se examina las declaraciones de un procedimiento. El tipo en una declaración determina la cantidad de memoria necesaria para el nombre declarado.
Selección de instrucciones: Es importante que el conjunto de instrucciones sea uniforme y completo. Las velocidades de las instrucciones es un factor importante. Si no se tiene en cuenta la eficiencia del programa objeto, la selección de instrucciones es sencilla. Para cada tipo de proposición de tres direcciones, se puede diseñar un esqueleto de código.

Ejemplo: código de tres direcciones de:
x := y + z

MOV y, R0 /* cargar y en el registro R0 */
ADD z, R0 /* suma z a R0 */
MOV R0, x /* almacenar R0 en x */

Asignación de registros: Las instrucciones que implican operandos en registros son generalmente más rápidas que las de los operandos en memoria. Por lo tanto, utilizar eficientemente los registros es fundamental para generar un buen código. El uso de registros se divide en dos subproblemas:
  • Durante la asignación de los registros: se selecciona el conjunto de variables que residirá en los registros en un momento del programa.
  • Durante la fase posterior de asignación a los registros, se escoge el registro específico en el que residirá una variable.
Elección del orden de evaluación: el orden en que se realizan los cálculos puede variar la eficiencia del código objeto. Algunos ordenamientos de los cálculos necesitan menos registros que otros para guardar resultados intermedios.
Elegir un orden mejor es un problema difícil, NP-completo.

Características

Se busca:
      Transpirabilidad
       Posibilidades de optimización
Debe ser: 
         Abstracto 
         Sencillo 
 No se tiene en cuenta:
          Modos de direccionamiento
          Existencia de registros
          Eficiencia de cada operación

Errores comunes

Los archivos de código objeto pueden ser muy útiles en muchas situaciones, sin embargo consigo traen problemas que pueden generar errores muy difíciles de corregir, por ejemplo cuando un objeto importa funciones de otro archivo de código objeto que ha sido modificado, el intento de la librería o el programa que importó tal librería de ejecutar el código con parámetros incorrectos o inexistentes puede generar un error que generalmente el compilador no detecta, ya que el código objeto no es verificado, únicamente enlazado. Este tipo de error se puede solucionar reescribiendo el código de manera correcta y re compilarlo a código objeto.


No hay comentarios:

Publicar un comentario