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