Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Object Module Format (Intel)

From Wikipedia, the free encyclopedia
Object file format

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

TheObject Module Format (OMF) is anobject fileformat used primarily for software intended to run onIntel 80x86microprocessors.It was originally developed byIntel around 1975–1977 forISIS-II, targeting the 8-bit8080/8085 processors.[1][2][3][4] This variant later became known asOMF-80.AsOMF-86 it was adapted to the 16-bit8086 processor in 1978.[5]

Version 4.0 of OMF for the 8086 family was released in 1981 under the nameRelocatable Object Module Format,[6][3][4] and is perhaps best known toDOS users as an.OBJ file. Versions for the80286 (OMF-286)[7][8] and the 32-bit80386 processors (OMF-386)[9][10][3] were introduced in 1981 and 1985, respectively.It has since been standardized by theTool Interface Standards Committee[11] and was also extended byMicrosoft[12] andIBM (IBM-OMF). Intel also adapted the format to the8051 microcontroller (OMF-51[13] andAOMF).

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 thea.out format, or are pointed to by the header, like theELF 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:

SizeContents
1 byteRecord type, for example relocation information
2 bytesData length (N+1)
N bytesData (varies depending on the record type)
1 byteChecksum 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-DOSDGROUP
  • 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; alinker 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 itcan be represented by multiple records. The file format specification (version 1.1) says that thismust be done for sections larger than 1 KiB. Records containingrelocation 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 aslibrary file format.

Use

[edit]

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

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

TheEmbarcadero Delphi compiler used this format when generatingobj 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 ofCOFF format, along with 64-bit Windows target.

See also

[edit]

References

[edit]
  1. ^MCS 80/85 Absolute Object File Formats(PDF) (Technical specification). Santa Clara, California, USA:Intel Corporation. 1977. Product Number 9800183B. Archived fromthe 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.Archived(PDF) from the original on 2023-11-25. Retrieved2023-11-25. (42 pages)
  3. ^abcBurgett, Kenneth "Ken" (2017-11-10)."Development of Intel ISIS Operating System - An interview with Ken Burgett".Archived from the original on 2023-11-24. Retrieved2023-11-25.A good friend of mine, Bruce, got the job of developing the Object Module Format (OMF) for the8080, and the upcoming8086. This piece of work would live on for years, sinceMS-DOS used it with little or no modifications […] It was a good piece of work and it was updated in 1985 to support the80386 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 therelocatable code into a fixed memory image, with a defined entry point, since that was howISIS handled load modules. The locator was also built to enable mapping of a linked module into a set ofEPROM images, so they could be programmed by aprom-burner.[1][2]
  4. ^abNecasek, Michal (2020-07-25) [2020-07-09]."How Old Is OMF?".OS/2 Museum.Archived from the original on 2023-11-25. Retrieved2023-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.Archived(PDF) from the original on 2023-11-25. Retrieved2020-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.Archived(PDF) from the original on 2023-11-26. Retrieved2023-11-26.[6] (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.Archived(PDF) from the original on 2023-11-26. Retrieved2023-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. ^"Tool Interface Standards (TIS) Relocatable Object Module Format (OMF) Specification"(PDF). Version 1.1. TIS Committee /Unix International. May 1995 [1993, 1992]. Archived fromthe original(PDF) on 2020-02-07. Retrieved2020-02-07.[7][8] (87 pages)
  12. ^"The Microsoft OBJ File Format".FileFormat.Info.Archived from the original on 2023-11-25. Retrieved2023-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.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.)
  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].Archived(PDF) from the original on 2023-11-26. Retrieved2023-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].Archived from the original on 2023-11-26. Retrieved2023-11-26.[9] (vi+95 pages)

Further reading

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Object_Module_Format_(Intel)&oldid=1292503820"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp