개체 모듈 형식(인텔)
Object Module Format (Intel)| 파일 확장자 | .omf, .obj |
|---|---|
| 개발자 | 공구 인터페이스 표준 위원회 |
| 형식의 종류 | 개체파일 |
객체 모듈 형식(OMF)은 인텔 80x86 마이크로프로세서에서 실행되는 소프트웨어에 주로 사용되는 객체 파일 형식입니다. 원래 인텔이 ISIS-II용으로 1975-1977년경에 개발하였으며, 8비트 8080/8085 프로세서를 대상으로 합니다.[1][2][3][4] 이 변종은 나중에 OMF-80으로 알려지게 되었습니다. OMF-86은 1978년에 16비트 8086 프로세서에 적용되었습니다.[5] 8086 계열용 버전 4.0은 1981년에 리로저블 오브젝트 모듈 포맷(Relocable Object Module Format)이라는 이름으로 출시되었으며,[6][3][4] 도스 사용자들에게 에 대해 가장 잘 알려져 있습니다.OBJ 파일. 80286(OMF-286)[7][8]과 32비트 80386 프로세서(OMF-386)[9][10][3]의 버전은 각각 1981년과 1985년에 소개되었습니다. 이후 도구 인터페이스 표준 위원회에[11] 의해 표준화되었으며 마이크로소프트와[12] IBM(IBM-OMF)에서도 확장되었습니다. 인텔은 또한 이 포맷을 8051 마이크로 컨트롤러(OMF-51[13] 및 AOMF)에 적용했습니다.
파일 형식
많은 객체 파일 형식은 재배치 테이블과 같은 테이블 집합으로 구성되며, 테이블은 a.out 형식과 같이 파일의 고정된 위치에 저장되거나 ELF 형식과 같이 헤더에 의해 지정됩니다. 섹션, 코드, 데이터 영역 등은 이러한 파일 내에서 연속적인 바이트 영역으로 저장됩니다.
그러나 재배치 가능한 객체 모듈 형식은 연결할 때 최소한의 메모리를 필요로 하도록 설계되었으며 다음과 같은 형식을 가진 일련의 레코드로 구성됩니다.
| 크기 | 내용물 |
|---|---|
| 1바이트 | 레코드 유형(예: 이전 정보) |
| 2바이트 | 데이터 길이(N+1) |
| N 바이트 | 데이터(기록 유형에 따라 다름) |
| 1바이트 | 체크섬 또는 0 |
여러 공급업체의 OMF 변형을 통합하고 32비트 코드 및 동적 링크와 같은 기능을 추가하기 때문에 매우 다양한 레코드 유형이 있습니다. 다음은 중요한 레코드 유형입니다.
- COMENT - (88h) Comment, 제어 정보도 포함되어 있을 수 있습니다.
- EXTDEF - (8Ch) 외부 참조 정의
- PUBDEF - (90h/91h) 이 모듈에서 외부 기호를 식별합니다.
- SEGDEF - (98h/99h) 세그먼트 식별
- GRPDEF - (9Ah) MS-DOS와 같은 세그먼트 그룹을 식별합니다.
DGROUP - FIXUP - (9Ch/9Dh) Fixup 또는 이전 기록
- LEDATA - (A0h/A1h) 코드 또는 데이터 섹션의 텍스트 포함
- COMDEF - (B0h) 초기화되지 않은 공통 데이터
- COMDAT - (C2h/C3h) 초기화된 공통 데이터
- MODEND - (8Ah/8Bh) 모듈의 끝을 나타냅니다.
파일에는 심볼 테이블에 대한 포인터와 같은 파일 오프셋을 포함하는 헤더가 없습니다. 링커는 모든 정보를 추출하려면 개체 파일을 완전히 구문 분석해야 합니다.
OMF 포맷에서 한 섹션의 데이터는 반드시 파일에 연속 바이트로 저장될 필요는 없으며 대신 여러 레코드로 표현될 수 있습니다. 파일 형식 사양(버전 1.1)에는 1KiB보다 큰 섹션에 대해 이 작업을 수행해야 한다고 나와 있습니다. 이전 정보(픽스업)가 담긴 기록은 신청하는 구간의 데이터 기록 바로 뒤에 저장해야 하므로 구간 데이터와 이전 정보가 파일에 '혼합'됩니다.
파일 형식은 개체 파일에서 반복되는 데이터 시퀀스를 압축할 수 있는 특수 레코드(LIDATA)를 제공합니다. 또한 하나의 객체 파일에 나중 실행 파일의 진입점의 심볼 이름을 저장할 수 있는 가능성도 제공합니다.
파일 형식은 라이브러리 파일 형식으로도 사용할 수 있습니다.
사용하다
파일 형식은 도스, 16비트 윈도우, 16비트 및 32비트 OS/2에서 가장 중요한 객체 파일 형식입니다.[14][15]
32비트 버전의 OMF 형식을 사용하는 툴체인은 거의 없습니다. 예를 들어, Watcom C 툴체인은 32비트 분할 메모리 레이아웃을 사용하는 대상에 대한 코드를 생성할 수 있습니다. Iron Spring PL/I는 OS/2 32비트 플랫 메모리 레이아웃에 대한 코드를 생성할 수 있습니다.
Embarcadero Delphi 컴파일러는 생성할 때 이 형식을 사용했습니다. obj C++용 파일입니다. 64비트 윈도우 타겟과 함께 COFF 포맷을 지원하는 델파이 XE2 버전 이전에 오브젝트 파스칼로 작성된 프로그램이나 유닛에 링크할 수 있는 유일한 포맷이었습니다.
참고 항목
- 공통 개체 파일 형식(COFF)
- 실행 파일 및 연결 형식(ELF)
- a.아웃
- 개체파일
- VME(Object Module Format)(ICL VME에서 사용하는 OMF)
- 객체 모듈 형식(Apple)(ORCA / Apple IIGS에서 사용하는 OMF)
참고문헌
- ^ 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페이지)
- ^ 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페이지)
- ^ 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.
- ^ [3]"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. [4][5] (124페이지)
- ^ [6]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. (90페이지)
- ^ "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. (251페이지중 2페이지)
- ^ 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.
- ^ [7]"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. [8] (87페이지)
- ^ "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페이지) (NB) 인텔의 RL512.0 및 PL/M-511.0과 함께 제공되는 버전입니다. 1982-04-12일 이전 버전의 X207이 있었습니다.)
- ^ 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페이지)
- ^ [9]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. (vi+95페이지)
더보기
- 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. 코드 : [10][11] 에라타 : [12]