컴파일러의 출력이 객체 코드라고하는 이유는 무엇입니까?


13

Hackers & Painters에 발표 된 Paul Graham이 설명한 에세이 프로그래밍 언어 :

컴파일러에 공급하는 고급 언어를 소스 코드 라고하며 , 생성하는 기계 언어 변환을 객체 코드 라고 합니다 .

에서 오브젝트 코드에 Wikipedia 기사 :

객체 코드 또는 때로는 객체 모듈은 컴퓨터 컴파일러가 생성하는 것입니다.

에서 '컴파일러'의 정의 :

전통적으로 컴파일의 출력을 객체 코드 또는 객체 모듈이라고했습니다. 여기서 "개체"라는 용어는 개체 지향 프로그래밍과 관련이 없습니다.

그렇다면 객체라는 용어 무엇 입니까?


2
컴파일러는 머신 코드를 생성 할 필요가 없습니다. 더 낮은 추상화 레벨을 갖는 것이 일반적이며, 그렇지 않으면 일반적으로 번역기라고합니다.

2
객체 코드 에 대해 서로 통신해야하는 처음 두 사람 은 무엇을 호출해야할지 몰랐으므로 매우 일반적인 용어를 채택했습니다.
semaj

RetroComputing.SE에서 좋은 사람들은 이것에 대해 더 나은 통찰력을 가질 수 있습니다.
Roger

답변:


10

객체 코드는 때때로 컴파일러가 수행하는 변환 프로세스의 대상 결과이기 때문에 대상 코드 라고도 합니다. 따라서 "개체 코드"는 "소스 코드"와 반대로 사용됩니다.

컴파일러 세계에는 다른 이상한 이름이 있습니다. 예를 들어, 프로그램의 이진 코드가있는 파일의 세그먼트를 종종 "텍스트 세그먼트"라고합니다.


1
어떤 생각이 이 "텍스트"라고? 역사적 기원에서와 같이?
nielsbot

@nielsbot : 변수가 저장된 "데이터 세그먼트"와 달리 "텍스트 세그먼트"에는 원래 (컴파일하기 전에) 텍스트, 즉 프로그램 코드가 포함되어 있다고 생각합니다.
Michael Borgwardt

8

「객관적」과 같은 대상입니다. "것"으로 반대하지 마십시오.

"대상 코드"라고하는 것에 대한 dasblinkenlight의 답변과 유사합니다. 컴파일러의 목표 또는 목표입니다.


1
확실하지 않습니다.
Martin York

1
나에 대한 소리. 항상 컴파일러의 목표와 관련하여 참조됩니다.
Lord Tydus

네, 정답입니다. 동사가 컴파일러 ( doer )를 나타내고 주제 는 소스 코드이며 오브젝트 는 해당 조치의 대상 또는 결과 (컴파일) 인 문장에서 작동 방식을 반영합니다 . 따라서 "대상 코드"는 소스 ( "대상"으로 컴파일되는 소스)이고 "객체 코드"는 대상 (컴파일의 "객관적")입니다.
BarbaraKwarc

1

소스 코드를 컴파일 할 때 객체 코드가 생성됩니다. 이 오브젝트 코드는 실행할 라이브러리가 없기 때문에 아직 실행 가능하지 않습니다. 따라서 여러 객체 코드와 라이브러리를 연결하면 실행 파일이됩니다.

내 이해에서 " 객체 "는 해당 소스 코드를 작성하여 개발 한 " 사물 "과 관련이 있습니다. 모듈, 클래스, 함수 또는 무엇이든 될 수 있습니다.


-1

객체 코드Object File에 속해 있습니다.

초기 컴퓨터 과학에서 객체 라는 용어 는 "객관적"(일명 "대상")을 지칭하는 것이 아니라, 객체의 속성이 서로 쉽게 구별되고 쉽게 인식 될 수 있도록 강조한다. 일반적인 객체는 경계가 있기 때문에 쉽게 정의하고 이야기 할 수 있습니다. 안개와는 달리 ...

가상 객체는 데이터 컨테이너입니다.

앉아서 코드를 작성하는 것이 아니라 Object Code 입니다. 아니요, ELF, COFF, XCOFF (공통 객체 파일 형식)의 읽기 요구 사항을 따르고 코드가 이러한 요구 사항에 맞는 경우 말한대로 오브젝트 코드가 됩니다.


-3

일반적으로 학생들은 저급 언어를 이해하거나 저급 언어로 작성된 프로그램을 "개체 코드"라고합니다. 컴파일러의 출력을 객체 코드라고하는 이유를 이해하는 데 문제가 있습니다. 일반적으로 출력은 컴파일러에 의해 컴파일되는 target이라고합니다. 소스 코드의 목적입니다. 객체 코드가 저수준 언어 프로그램이라는 의미는 없습니다. 타겟이 생성되어 타겟이 컴파일러에 의해 컴파일되는 소스 코드의 객관 및 목적과 관련되어 있으므로 컴파일러의 출력이 일반적으로 "객체 코드"라고하는 이유입니다. 낮은 언어는 컴파일러에 의해 컴파일되지 않기 때문입니다. 저수준 언어는 "어셈블러"또는 "통역사"와 같은 번역기에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.