GOFF


La especificación GOFF (formato de archivo de objeto generalizado) se desarrolló para el sistema operativo MVS de IBM para reemplazar el formato de archivo de objeto IBM OS / 360 para compensar las debilidades del formato anterior. [1]

El formato de archivo de objeto IBM OS / 360 original se desarrolló en 1964 para la nueva computadora central IBM System / 360 . El formato también fue utilizado por los fabricantes de mainframes compatibles con enchufes y similares, incluidos Univac 90/60, 90/70 y 90/80 y Fujitsu B2800. El formato se amplió para agregar registros simbólicos e información ampliada sobre módulos, además de soporte para procedimientos y funciones con nombres de más de 8 caracteres. Si bien esto ayudó, no proporcionó la información mejorada necesaria para los lenguajes de programación más complicados de la actualidad y características más avanzadas como objetos, propiedades y métodos, soporte Unicode y métodos virtuales .

El formato de archivo de objeto GOFF fue desarrollado por IBM aproximadamente en 1995 como un medio para superar estos problemas. [2] La primera mención de este formato fue en la información introductoria sobre el nuevo Ensamblador de alto nivel. [3] Tenga en cuenta que el formato de archivo de objeto OS / 360 simplemente fue reemplazado por el formato GOFF, no fue obsoleto y todavía lo utilizan los ensambladores y compiladores de lenguajes donde el lenguaje puede soportar las limitaciones del formato anterior.

Este artículo utilizará el término "módulo" para referirse a cualquier nombre o símbolo equivalente, que se utiliza para proporcionar un identificador para un fragmento de código o datos externos al ámbito al que se hace referencia. Un módulo puede referirse a una subrutina, una función, Fortran Common o Block Data, un objeto o clase, un método o propiedad de un objeto o clase, o cualquier otra rutina con nombre o identificador externo a ese alcance particular que haga referencia al nombre externo.

Los términos "ensamblador" para un programa que convierte lenguaje ensamblador en código de máquina, así como "ensamblar" como el proceso de usar uno, y "compilar", como el proceso de usar un "compilador", que hace lo mismo. para lenguajes de alto nivel, debería, a los efectos de este artículo. ser considerado intercambiable; por lo tanto, cuando se usen "compilar" y "compilador", sustituya "ensamblar" y "ensamblador" según sea necesario.

Los números usados ​​en este artículo se expresan de la siguiente manera: a menos que se especifique como hexadecimal (base 16), todos los números usados ​​están en decimal (base 10). Cuando sea necesario expresar un número en hexadecimal, el formato estándar del ensamblador de mainframe consiste en usar la letra X mayúscula que precede al número, expresar las letras hexadecimales del número en mayúsculas y encerrar el número entre comillas simples, por ejemplo, el número 15deadbeef 16 sería expresado como X'15DEADBEEF '.