-
Gabarito: ERRADO
Um programa em linguagem de alto nível deve ser compilado para se transformar em linguagem de montagem (Certo);
e, posteriormente, montado para se transformar em linguagem de máquina (Código-Objeto). (Errada)
O montador gera o Código-Objeto ou Código de Máquina. Quem gera a LINGUAGEM DE MÁQUINA (Programa Executável - .EXE) é o Ligador ou Linkeditor, que "junta" o código-objeto às bibliotecas necessárias para gerar o programa executável (Linguagem de Máquina).
Fonte: https://www.inf.pucrs.br/~gustavo/disciplinas/pli/material/paradigmas-aula08.pdf
-
E porque a mesma banca CESPE julgou essa afirmativa como certa????
" Instruções em linguagem de máquina são apresentadas na forma de padrões de bits utilizados para representar as operações internas ao computador. A linguagem de montagem constitui uma versão da linguagem de máquina; cada instrução é representada por uma cadeia de texto que descreve o que a instrução faz. Nesse processo, o montador é o elemento que converte instruções em linguagem de montagem para linguagem de máquina. "
Que total falta de nexo...
-
Para quem ficou boiando, vejam essa discussão no itnerante e principalmente o comentário do professor Gustavo Vilar:
http://www.itnerante.com.br/group/arq_so/forum/topics/cespe-2013-bacen-rea-1-quest-o-51?commentId=1867568%3AComment%3A285375&groupId=1867568%3AGroup%3A10048
-
Essa questao foi dada como CERTA depois a CESPE alterou para E. Vejam a justificativa:
Existem arquiteturas em que o programa em alto nível é transformado diretamente em linguagem de máquina.
Por essa razão, opta‐se pela alteração do gabarito.
-
A palavra "DEVE" no meio da assertiva indica que nao existe outra possibilidade de sequencia. Na verdade é possivel sim um fluxo diferente do apresentado, sem passar por exemplo pela fase de liguagem de montagem. Questão difîcil!
Gabarito, ERRADO.
FFF
-
Discordo do comentário do colega que fala que o que sai do montador é o Código-Objeto.
Conforme descrito no livro do Stalling "Um montador é um programa que traduz a linguagem de montagem em código de máquina.". E logo em seguida ele cita "Um linker (ligador) é usado para resolver quaisquer referências entre os módulos carregados.".
Acredito que o erro está na palavra DEVE, pois um programa em linguagem de alto nível pode passar pelo INTERPRETADOR não necessitando de passar pelo ASSEMBLER.
-
"Não precisa ser compilada muito menos montada, apenas interpretada." prof.Gustavo Vilar
-
A questão toda é o DEVE.
Linguagens como C++ são compiladas (gerando arquivos de montagem), montadas (o que gera código-objeto) e ligadas (que gera código executável. em linguagem de máquina).
Já linguagens como o Python são interpretadas, tendo runtime libraries resolvidas em tempo de execução.
E linguagens como Java não são nem uma coisa nem outra, uma que que passa pelo processo de compilação e interpretação.
Fontes:
http://www2.hawaii.edu/~takebaya/ics111/process_of_programming/process_of_programming.html
https://oop-cpp.netlify.app/06-the-compilation-process/#the-c-compilation-process