Por que a saída de um compilador é chamada de código do objeto?


13

Do ensaio Linguagens de programação explicadas por Paul Graham, publicado na Hackers & Painters :

O idioma de alto nível que você alimenta o compilador também é conhecido como código-fonte e a tradução do idioma da máquina que ele gera é chamada de código de objeto .

A partir do artigo da Wikipedia sobre código objeto :

Código de objeto, ou às vezes módulo de objeto, é o que um compilador de computador produz.

De uma definição de 'compilador' :

Tradicionalmente, a saída da compilação tem sido chamada de código de objeto ou, às vezes, um módulo de objeto. (Observe que o termo "objeto" aqui não está relacionado à programação orientada a objetos.)

Então, a que está relacionado o termo objeto?


2
Observe que um compilador não precisa gerar código de máquina. É habitual ter um nível de abstração mais baixo, caso contrário, normalmente é chamado de tradutor.

2
As duas primeiras pessoas que tiveram que se comunicar sobre o código de objeto não sabiam como chamá-lo, e adotaram um termo muito genérico.
Semaj

As pessoas boas do RetroComputing.SE podem ter uma ideia melhor disso.
Roger

Respostas:


10

Às vezes, o código do objeto também é chamado de código de destino , porque é o resultado do processo de conversão realizado pelos compiladores. Portanto, "código do objeto" é usado como oposto ao "código-fonte".

Existem outros nomes estranhos no mundo dos compiladores: por exemplo, o segmento do arquivo com o código binário do seu programa costuma ser chamado de "segmento de texto".


1
Alguma idéia de por que é chamado de "texto"? Como na origem histórica?
Nielsbot 16/0318

@nielsbot: Eu acho que, simplesmente, ao contrário do "segmento de dados" onde as variáveis ​​são armazenadas, o "segmento de texto" contém o que era originalmente (antes da compilação), ou seja, o código do programa.
Michael Borgwardt

8

É objeto como em "objetivo". Não é objeto como uma "coisa".

Semelhante à resposta dasblinkenlight sobre ser chamado de "código de destino". É o alvo ou objetivo do compilador.


1
Não tenho certeza se concordo com isso.
Martin York

1
Parece certo para mim. Sempre foi referido no contexto do objetivo do compilador.
Lord Tydus

Sim, esta é a resposta certa. Ele reflete como funciona em uma frase, onde o verbo representa o compilador (o executor ), o assunto é o código-fonte e o objeto é o destino ou resultado dessa ação (compilação). Portanto, "código do assunto" é a fonte (que passa por compilação, como seu "assunto"), enquanto "código do objeto" é o destino (o "objetivo" da compilação).
precisa saber é o seguinte

1

O código do objeto é produzido quando você compila um código-fonte. Esse código de objeto ainda não é executável porque não possui bibliotecas necessárias para execução. Então, você vincula vários códigos e bibliotecas de objetos e ele se torna um executável.

No meu entendimento, " objeto " se refere à "coisa" que você desenvolveu escrevendo esse código-fonte. Pode ser um módulo, classe, função ou qualquer coisa.


-1

Código do objeto pertence ao arquivo de objeto .

O termo Objeto, no início da Ciência da Computação, não se refere a "objetivo" (também conhecido como "alvo"), mas enfatiza que uma propriedade de objetos é facilmente reconhecível, distinta uma da outra. Objetos comuns são fáceis de definir e falar, porque eles têm limites. Ao contrário do nevoeiro ...

Objetos virtuais são contêineres de dados.

Não é que você se sente e escreve algum código, e é de alguma forma o Código do Objeto . Não, você sente os requisitos de leitura de ELF, COFF, XCOFF (formatos comuns de Arquivo de Objeto) e, se o seu código atender a esses requisitos, ele se tornará um Código de Objeto, como você diz.


-3

Normalmente, os alunos entendem a linguagem de baixo nível ou um programa escrito em linguagem de baixo nível é chamado de "código de objeto". Há um problema para entender por que a saída do compilador é chamada de código de objeto. Geralmente, a saída é chamada de destino, que é compilada pelo compilador. É objetivo do código fonte. Não significa que o código do objeto seja um programa de linguagem de baixo nível. Apenas é gerar o destino para que o destino esteja relacionado ao objetivo e objetivo do código-fonte que é compilado pelo compilador e é por isso que a saída do compilador é normalmente chamada de "código do objeto". Porque a linguagem baixa não é compilada pelo compilador. Linguagem de baixo nível tem tradutor como "Assembler" ou "intérprete".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.