fbpx
Wikipedia

Relocatable Object Module Format

The Object Module Format (OMF) is an object file format used primarily for software intended to run on Intel 80x86 microprocessors. It was originally developed by Intel around 1975–1977 for ISIS-II, targetting the 8-bit 8080/8085 processors.[1][2][3][4] This variant later became known as OMF-80. As OMF-86 it was adapted to the 16-bit 8086 processor in 1978.[5] Version 4.0 for the 8086 family was released in 1981 under the name Relocatable Object Module Format,[6][3][4] and is perhaps best known to DOS users as an .OBJ file. Versions for the 80286 (OMF-286)[7][8] and the 32-bit 80386 processors (OMF-386)[9][10][3] were introduced in 1981 and 1985, respectively. It has since been standardized by the Tool Interface Standards Committee[11] and was also extended by Microsoft[12] and IBM (IBM-OMF). Intel also adapted the format to the 8051 microcontroller (OMF-51[13] and AOMF).

(Relocatable) Object Module Format
Filename extension
.omf, .obj
Developed byTool Interface Standards Committee
Type of formatObject file

File format edit

Many object file formats consist of a set of tables, such as the relocation table, which are either stored on fixed positions in the file, like the a.out format, or are pointed to by the header, like the ELF format. The "sections", code, data area, etc., are stored as contiguous areas of bytes within such files.

The Relocatable Object Module Format, however, was designed to require minimal memory when linking, and consists of a series of records that have the following format:

Size Contents
1 byte Record type, for example relocation information
2 bytes Data length (N+1)
N bytes Data (varies depending on the record type)
1 byte Checksum or 0

There is a wide variety of record types because of consolidation of OMF variants from several vendors, and because of adding such features as 32-bit code and dynamic linking. These are important record types:

  • COMENT - (88h) Comment, which may also contain control information.
  • EXTDEF - (8Ch) Defines external references
  • PUBDEF - (90h/91h) Identifies external symbols in this module
  • SEGDEF - (98h/99h) Identifies segments
  • GRPDEF - (9Ah) Identifies groups of segments, for example MS-DOS DGROUP
  • FIXUPP - (9Ch/9Dh) Fixup or relocation records
  • LEDATA - (A0h/A1h) Contains text of a code or data section
  • COMDEF - (B0h) Uninitialized common data
  • COMDAT - (C2h/C3h) Initialized common data
  • MODEND - (8Ah/8Bh) Indicates end of module

There is no header containing file offsets, such as a pointer to a symbol table, in the file; a linker must completely parse the object file to extract all the information.

In the OMF format the data of one section is not necessarily stored as contiguous bytes in the file, instead it can be represented by multiple records. The file format specification (version 1.1) says that this must be done for sections larger than 1 KiB. Records containing relocation information (fixups) must be stored immediately following the data records of the section they apply to, so the section data and the relocation information is "mixed" in the file.

The file format provides special records (LIDATA) that allow compression of repeating data sequences in an object file. It also provides the possibility to store the symbol name of the entry point of the later executable file in one object file.

The file format can also be used as library file format.

Use edit

The file format is the most important object file format under DOS, 16-bit Windows, and 16-bit and 32-bit OS/2.[14][15]

Few toolchains use the 32-bit version of the OMF format. For example, the Watcom C toolchain allows generating code for targets that use 32-bit segmented memory layouts; Iron Spring PL/I can generate code for OS/2 32-bit flat memory layouts.

The Embarcadero Delphi compiler used this format when generating obj files for C++. It was the only format of object files that could be linked to a program or unit written in Object Pascal prior to version XE2 of Delphi, which introduced support of COFF format, along with 64-bit Windows target.

See also edit

References edit

  1. ^ (PDF) (Technical specification). Santa Clara, California, USA: Intel Corporation. 1977. Product Number 9800183B. Archived from the original (PDF) on 2017-06-27. (16 pages)
  2. ^ MCS 80/85 Relocatable Object Module Formats (PDF) (Technical specification). Santa Clara, California, USA: Intel Corporation. March 1981. Product Number 121747-001. A33S/381/S00 IP. (PDF) from the original on 2023-11-25. Retrieved 2023-11-25. (42 pages)
  3. ^ a b c Burgett, Kenneth "Ken" (2017-11-10). "Development of Intel ISIS Operating System - An interview with Ken Burgett". from the original on 2023-11-24. Retrieved 2023-11-25. A good friend of mine, Bruce, got the job of developing the Object Module Format (OMF) for the 8080, and the upcoming 8086. This piece of work would live on for years, since MS-DOS used it with little or no modifications […] It was a good piece of work and it was updated in 1985 to support the 80386 32-bit flat address mode. […] The OMF gave us a good roadmap for the design of the linker, which knitted object modules together, and the locator, which processed the relocatable code into a fixed memory image, with a defined entry point, since that was how ISIS handled load modules. The locator was also built to enable mapping of a linked module into a set of EPROM images, so they could be programmed by a prom-burner.
  4. ^ a b Necasek, Michal (2020-07-25) [2020-07-09]. "How Old Is OMF?". OS/2 Museum. from the original on 2023-11-25. Retrieved 2023-11-25.
  5. ^ External Product Specification, 8086 Object Module Formats. Intel Corporation. 1978-12-19.
  6. ^ "8086 Relocatable Object Module Formats" (PDF). Version 4.0. Santa Clara, California, USA: Intel Corporation. November 1981. Product Number 121748-001. ark:/13960/t07w7pz4b. (PDF) from the original on 2023-11-25. Retrieved 2020-02-08. [3][4][5] (124 pages)
  7. ^ iAPX 286 System Builder User's Guide (PDF). Santa Clara, California, USA: Intel Corporation. September 1981. Order Number 121711-001. (PDF) from the original on 2023-11-26. Retrieved 2023-11-26. (90 pages)
  8. ^ "iAPX 286 Object Module Format". iAPX 286 Operating Systems Writer's Guide (PDF). Intel Corporation. 1983. pp. 11-10–11-11. Order Number 121960-001. (PDF) from the original on 2023-11-26. Retrieved 2023-11-26. (2 of 251 pages)
  9. ^ Specification 386 Object Modules Format. Intel Corporation. 1991 [1990]. Order Number 482991-002.
  10. ^ Simple Bootloadable Files in 386 Object Modules Format. Intel Corporation. 1991 [1990]. Order Number 483164-001.
  11. ^ (PDF). Version 1.1. TIS Committee / UNIX International, Inc. May 1995 [1993, 1992]. Archived from the original (PDF) on 2020-02-07. Retrieved 2020-02-07. (87 pages)
  12. ^ "The Microsoft OBJ File Format". FileFormat.Info. from the original on 2023-11-25. Retrieved 2023-11-26.
  13. ^ External Product Specification for the MCS-51 Object Module Format (PDF). Version 5.0 Revision A. Intel Corporation. 1982-09-05. Product Number 9800183B. Document Control Center Number 481984. (PDF) from the original on 2023-11-25. (24 pages) (NB. This is the version shipped with Intel's RL51 2.0 and PL/M-51 1.0. There was an earlier version X207 dated 1982-04-12.)
  14. ^ IBM OS/2 16/32-bit Object Module Format (OMF) and Linear eXecutable Module Format (LX) (PDF). Version 8. Boca Raton, Florida, USA: IBM Corporation. 1994-06-30 [1991, 1993]. (PDF) from the original on 2023-11-26. Retrieved 2023-11-26. (v+87 pages)
  15. ^ IBM OS/2 16/32-bit Object Module Format (OMF) and Linear eXecutable Module Format (LX). Version/Revision 10. Boca Raton, Florida, USA: IBM Corporation. 1996-10-09 [1991]. from the original on 2023-11-26. Retrieved 2023-11-26. (vi+95 pages)

Further reading edit

  • Levine, John R. (2000) [October 1999]. "Chapter 3: Object files". Linkers and Loaders. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, California, USA: Morgan Kaufmann. ISBN 1-55860-496-0. OCLC 42413382. Archived from the original on 2013-01-25. Retrieved 2020-01-12. Code: [10][11] Errata: [12]

relocatable, object, module, format, object, module, format, object, file, format, used, primarily, software, intended, intel, 80x86, microprocessors, originally, developed, intel, around, 1975, 1977, isis, targetting, 8080, 8085, processors, this, variant, la. The Object Module Format OMF is an object file format used primarily for software intended to run on Intel 80x86 microprocessors It was originally developed by Intel around 1975 1977 for ISIS II targetting the 8 bit 8080 8085 processors 1 2 3 4 This variant later became known as OMF 80 As OMF 86 it was adapted to the 16 bit 8086 processor in 1978 5 Version 4 0 for the 8086 family was released in 1981 under the name Relocatable Object Module Format 6 3 4 and is perhaps best known to DOS users as an OBJ file Versions for the 80286 OMF 286 7 8 and the 32 bit 80386 processors OMF 386 9 10 3 were introduced in 1981 and 1985 respectively It has since been standardized by the Tool Interface Standards Committee 11 and was also extended by Microsoft 12 and IBM IBM OMF Intel also adapted the format to the 8051 microcontroller OMF 51 13 and AOMF Relocatable Object Module FormatFilename extension omf objDeveloped byTool Interface Standards CommitteeType of formatObject file Contents 1 File format 2 Use 3 See also 4 References 5 Further readingFile format editMany object file formats consist of a set of tables such as the relocation table which are either stored on fixed positions in the file like the a out format or are pointed to by the header like the ELF format The sections code data area etc are stored as contiguous areas of bytes within such files The Relocatable Object Module Format however was designed to require minimal memory when linking and consists of a series of records that have the following format Size Contents1 byte Record type for example relocation information2 bytes Data length N 1 N bytes Data varies depending on the record type 1 byte Checksum or 0There is a wide variety of record types because of consolidation of OMF variants from several vendors and because of adding such features as 32 bit code and dynamic linking These are important record types COMENT 88h Comment which may also contain control information EXTDEF 8Ch Defines external references PUBDEF 90h 91h Identifies external symbols in this module SEGDEF 98h 99h Identifies segments GRPDEF 9Ah Identifies groups of segments for example MS DOS DGROUP FIXUPP 9Ch 9Dh Fixup or relocation records LEDATA A0h A1h Contains text of a code or data section COMDEF B0h Uninitialized common data COMDAT C2h C3h Initialized common data MODEND 8Ah 8Bh Indicates end of moduleThere is no header containing file offsets such as a pointer to a symbol table in the file a linker must completely parse the object file to extract all the information In the OMF format the data of one section is not necessarily stored as contiguous bytes in the file instead it can be represented by multiple records The file format specification version 1 1 says that this must be done for sections larger than 1 KiB Records containing relocation information fixups must be stored immediately following the data records of the section they apply to so the section data and the relocation information is mixed in the file The file format provides special records LIDATA that allow compression of repeating data sequences in an object file It also provides the possibility to store the symbol name of the entry point of the later executable file in one object file The file format can also be used as library file format Use editThe file format is the most important object file format under DOS 16 bit Windows and 16 bit and 32 bit OS 2 14 15 Few toolchains use the 32 bit version of the OMF format For example the Watcom C toolchain allows generating code for targets that use 32 bit segmented memory layouts Iron Spring PL I can generate code for OS 2 32 bit flat memory layouts The Embarcadero Delphi compiler used this format when generating obj files for C It was the only format of object files that could be linked to a program or unit written in Object Pascal prior to version XE2 of Delphi which introduced support of COFF format along with 64 bit Windows target See also editCommon Object File Format COFF Executable and Linkable Format ELF a out Object file Object Module Format VME OMF as used by ICL VME Object Module Format Apple OMF as used by ORCA Apple IIGS References edit MCS 80 85 Absolute Object File Formats PDF Technical specification Santa Clara California USA Intel Corporation 1977 Product Number 9800183B Archived from the original PDF on 2017 06 27 16 pages MCS 80 85 Relocatable Object Module Formats PDF Technical specification Santa Clara California USA Intel Corporation March 1981 Product Number 121747 001 A33S 381 S00 IP Archived PDF from the original on 2023 11 25 Retrieved 2023 11 25 42 pages a b c Burgett Kenneth Ken 2017 11 10 Development of Intel ISIS Operating System An interview with Ken Burgett Archived from the original on 2023 11 24 Retrieved 2023 11 25 A good friend of mine Bruce got the job of developing the Object Module Format OMF for the 8080 and the upcoming 8086 This piece of work would live on for years since MS DOS used it with little or no modifications It was a good piece of work and it was updated in 1985 to support the 80386 32 bit flat address mode The OMF gave us a good roadmap for the design of the linker which knitted object modules together and the locator which processed the relocatable code into a fixed memory image with a defined entry point since that was how ISIS handled load modules The locator was also built to enable mapping of a linked module into a set of EPROM images so they could be programmed by a prom burner 1 2 a b Necasek Michal 2020 07 25 2020 07 09 How Old Is OMF OS 2 Museum Archived from the original on 2023 11 25 Retrieved 2023 11 25 External Product Specification 8086 Object Module Formats Intel Corporation 1978 12 19 8086 Relocatable Object Module Formats PDF Version 4 0 Santa Clara California USA Intel Corporation November 1981 Product Number 121748 001 ark 13960 t07w7pz4b Archived PDF from the original on 2023 11 25 Retrieved 2020 02 08 3 4 5 124 pages iAPX 286 System Builder User s Guide PDF Santa Clara California USA Intel Corporation September 1981 Order Number 121711 001 Archived PDF from the original on 2023 11 26 Retrieved 2023 11 26 6 90 pages iAPX 286 Object Module Format iAPX 286 Operating Systems Writer s Guide PDF Intel Corporation 1983 pp 11 10 11 11 Order Number 121960 001 Archived PDF from the original on 2023 11 26 Retrieved 2023 11 26 2 of 251 pages Specification 386 Object Modules Format Intel Corporation 1991 1990 Order Number 482991 002 Simple Bootloadable Files in 386 Object Modules Format Intel Corporation 1991 1990 Order Number 483164 001 Tool Interface Standards TIS Relocatable Object Module Format OMF Specification PDF Version 1 1 TIS Committee UNIX International Inc May 1995 1993 1992 Archived from the original PDF on 2020 02 07 Retrieved 2020 02 07 7 8 87 pages The Microsoft OBJ File Format FileFormat Info Archived from the original on 2023 11 25 Retrieved 2023 11 26 External Product Specification for the MCS 51 Object Module Format PDF Version 5 0 Revision A Intel Corporation 1982 09 05 Product Number 9800183B Document Control Center Number 481984 Archived PDF from the original on 2023 11 25 24 pages NB This is the version shipped with Intel s RL51 2 0 and PL M 51 1 0 There was an earlier version X207 dated 1982 04 12 IBM OS 2 16 32 bit Object Module Format OMF and Linear eXecutable Module Format LX PDF Version 8 Boca Raton Florida USA IBM Corporation 1994 06 30 1991 1993 Archived PDF from the original on 2023 11 26 Retrieved 2023 11 26 v 87 pages IBM OS 2 16 32 bit Object Module Format OMF and Linear eXecutable Module Format LX Version Revision 10 Boca Raton Florida USA IBM Corporation 1996 10 09 1991 Archived from the original on 2023 11 26 Retrieved 2023 11 26 9 vi 95 pages Further reading editLevine John R 2000 October 1999 Chapter 3 Object files Linkers and Loaders The Morgan Kaufmann Series in Software Engineering and Programming 1 ed San Francisco California USA Morgan Kaufmann ISBN 1 55860 496 0 OCLC 42413382 Archived from the original on 2013 01 25 Retrieved 2020 01 12 Code 10 11 Errata 12 Retrieved from https en wikipedia org w index php title Relocatable Object Module Format amp oldid 1188292618, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.