You are on page 1of 69

Organização e Arquitetura de Computadores

(Aula 1)

Prof. Rômulo Santos


romulodba@gmail.com

www.dominandoti.com.br www.dominandoti.com.br
Acesse nosso site em
www.dominandoti.com.br

Cursos Turmas em Brasília, na sua cidade, e cursos online


Livros Edições publicadas, lançamentos e promoções
Fórum Interação direta entre estudantes e com os professores
Simulados Questões inéditas, ranking de notas e correções em vídeo
Blog Dicas e macetes de estudo, indicações de bibliografia, etc.
Materiais Versões atualizadas de notas de aula e listas de exercícios

Curta o Dominando TI no
e receba nossas dicas sobre concursos!
www.dominandoti.com.br
Organização e Arquitetura de Computadores

Referências
Organização Estruturada de Computadores. 5ª Edição. –
2007. Autor: Andrew S. Tanenbaum. Editora: Pearson
Education.

Arquitetura e Organização de Computadores.


8ª Edição. 2010.
Autor: William Stallings. Editora: Pearson.

Prof. Rômulo Santos – romulodba@gmail.com 3 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Conteúdo Programático:

- Introdução;
- Arquitetura de Von Neumann;
- Arquitetura de Harvard;
- Arquitetura Multinível.

Prof. Rômulo Santos – romulodba@gmail.com 4 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Introdução
- Arquitetura de computadores refere-se aos atributos de um sistema visíveis a um
programador, ou em outras palavras, aqueles atributos que possuem impacto direto
sobre a execução lógica de um programa.
- Organização de computadores refere-se às unidades operacionais e suas
interconexões que realizam as especificações arquiteturais. Logo, uma organização de
computadores precisa ser projetada para implementar determinada especificação
arquitetural.
- Por exemplo, é uma questão de projeto arquitetural se um computador terá uma
instrução de multiplicação. Já é uma questão de organização, a forma como esta
instrução será implementada.
- Muitos fabricantes de computadores oferecem uma família de modelos de
computadores, todos com a mesma arquitetura, mas com diferenças em sua
organização. Consequentemente, os diferentes modelos na familia têm diferentes
características de preço e desempenho.
Prof. Rômulo Santos – romulodba@gmail.com 5 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Introdução
Função refere-se a operação individual de cada componente como parte da estrutura. As
funções que um computador pode realizar são:

Prof. Rômulo Santos – romulodba@gmail.com 6 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Introdução
Estrutura refere-se ao modo como os componentes são inter-relacionados. Na estrutura
de um computador existem quatro componentes principais que são:

Prof. Rômulo Santos – romulodba@gmail.com 7 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Arquitetura de Von Neumann
É uma arquitetura de computador que se caracteriza pela possibilidade de armazenar
programas (instruções/endereços) e dados no mesmo espaço de memória.

Características:
- Barramento compartilhado entre dados e endereços;
- Baixo custo;
- Desempenho limitado (gargalo).

Funcionamento:
- Memória armazena dados e instruções;
- CPU encarregada buscar instruções e dados,
decodificar e executar as instruções. Por fim,
o resultado será armazenado na memória.

Prof. Rômulo Santos – romulodba@gmail.com 8 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Arquitetura de Harvard
É uma arquitetura de computador que se distingue das outras por possuir duas memórias
diferentes e independência em termos de barramento e ligação ao processador.
Características:
- Separação de barramento de dados e endereços;
- Aumento de custo;
- Desempenho mais otimizado (permite que o processador
possa acessar simultaneamente dados e instruções).
Funcionamento:
- A Arquitetura de Harvard surgiu da
necessidade de se obter uma arquitetura
que pudesse trabalhar mais rapidamente.
- A CPU pode ler uma instrução e executar um
acesso de dado na memória ao mesmo tempo.
Prof. Rômulo Santos – romulodba@gmail.com 9 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q01) CESPE – EBC (2011): Analista de TI

Considerando a organização e arquitetura de computadores, julgue os itens


que se seguem.
O termo arquitetura de um computador refere-se aos atributos de um sistema
que são visíveis para o programador ou, em outras palavras, aos atributos que
têm impacto direto sobre a execução lógica de um programa. O termo
organização de um computador refere-se às unidades operacionais e suas
interconexões que implementam as especificações de sua arquitetura.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 10 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q02) CESPE – TRE/MT (2010): Tecnologia da Informação


Com base nos conceitos de arquitetura de computadores, julgue os itens seguintes.

I - A arquitetura de computadores trata do comportamento funcional de um sistema computacional


do ponto de vista do programador.
II - A organização de computadores trata da estrutura interna que não é visível ao programador.
III - O computador pode ser analisado em vários níveis, sendo o nível mais alto aquele em que o
usuário executa programas, e o nível mais baixo o de transistores e conexões.
IV - Um refinamento do modelo de von Neumann é o modelo de barramento de sistema que possui
uma CPU (ALU e controle) e a memória.
V - Os quatro componentes do modelo de von Neumann são visíveis na placa mãe e também no
barramento de sistema.
Estão certos apenas os itens

a) I e II.
b) I e IV.
c) II e IV.
d) I, II e III.
e)Prof.III,Rômulo
IV Santos
e V. – romulodba@gmail.com 11 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q03) ESAF – SUSEP (2010): Tecnologia da Informação

Segundo o conceito da Máquina de Von Neumann

a) apenas instruções ficam armazenadas.


b) instruções e dados são armazenados na mesma memória.
c) instruções e dados são armazenados em memórias distintas.
d) instruções e dados não são armazenados, com vistas à otimização do uso da
memória.
e) os dados ficam armazenados na memória, não havendo armazenamento de
instruções.

Prof. Rômulo Santos – romulodba@gmail.com 12 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q04) FCC – TJ/SE (2009): Programação de Sistemas

A arquitetura de Von Neumann NÃO reúne o seguinte componente:

a) memória.
b) unidade de controle.
c) unidade de lógica e aritmética.
d) dispositivos de entrada e saída.
e) barramento decimal.

Prof. Rômulo Santos – romulodba@gmail.com 13 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q05) CETRO – IMBEL (2008): Engenheiro de Processamento Digital de


Sinais

A arquitetura de Harvard prevê um projeto que utiliza:

a) Uma cache para guardar dados.


b) Cache unificada.
c) Uma única cache para guardar instruções.
d) Uma cache para dados e outra para instruções.
e) Uma cache para dados e a memória principal para instruções.

Prof. Rômulo Santos – romulodba@gmail.com 14 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q06) VUNESP – CEETEPS/SP (2009): Analista Administrativo

Em um computador baseado na arquitetura __________, a Unidade Central de


Processamento (UCP) pode ler uma instrução e executar um acesso de dado na
memória __________, pois as buscas de instruções e os acessos aos dados
utilizam __________, conseguindo o computador, dessa forma, processar um
número __________ de instruções por ciclo de clock. Assinale a alternativa que
completa, correta e respectivamente, as lacunas do texto.

a) Harvard ... ao mesmo tempo ... vias distintas ... maior.


b) Harvard ... ao mesmo tempo ... vias distintas ... menor.
c) Harvard ... sequencialmente ... uma mesma via ... menor.
d) Von Neumann ... ao mesmo tempo ... vias distintas ... maior.
e) Von Neumann ... sequencialmente ... vias distintas ... menor.

Prof. Rômulo Santos – romulodba@gmail.com 15 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q07) VUNESP – CETESB (2009): Engenheiro Eletricista

Quais são os componentes de um computador que usa arquitetura de von


Neumann?
a) Memória, unidade aritmética e lógica, unidade central de processamento,
unidade de controle e unidades de entrada e de saída.
b) Unidade aritmética e lógica, unidade central de processamento, unidade de
controle e unidades de entrada e de saída.
c) Memória, unidade central de processamento, unidade de controle e unidades
de entrada e de saída.
d) Memória, unidade aritmética e lógica, unidade de controle e unidades de
entrada e de saída.
e) Memória, unidade aritmética e lógica, unidade central de processamento e
unidades de entrada e de saída.
Prof. Rômulo Santos – romulodba@gmail.com 16 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q08) VUNESP – DESENVOLVESP (2014): Analista de Sistemas

Em um computador, os caminhos por onde, de forma geral, trafegam


informações entre os seus diversos componentes são conhecidos como

a) Pipeline.
b) Barramento.
c) Via de Controle.
d) Registradores da CPU.
e) Máquina de von Neumann.

Prof. Rômulo Santos – romulodba@gmail.com 17 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q09) FCC – TRT – 1ª REGIÃO/RJ (2014): Tecnologia da Informação

A arquitetura de computadores conhecida como “Arquitetura de Harvard” se


diferencia da Arquitetura Clássica de von Neumann
a) pelo fato de, os processadores baseados na primeira arquitetura possuírem
um conjunto de instruções com muitas instruções, que são executadas cada uma
com um tempo característico, consumindo vários ciclos de relógio.
b) pelo fato de, os processadores baseados na primeira arquitetura seguirem o
modelo CISC, ou Computador com um Conjunto Complexo de Instruções.
c) por exigir mais tempo na execução das instruções de um programa típico.
d) por possuir apenas três blocos em sua composição: memória, unidade lógica
e aritmética e unidade de controle.
e) por possuir memórias específicas para dados e para instruções, cada uma
com seu barramento de dados específico.
Prof. Rômulo Santos – romulodba@gmail.com 18 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q10) FUNDEP – IPSEMG (2013): Tecnologia da Informação

Considerando-se o conceito de uma arquitetura de computadores tradicional (von


Neumann), é INCORRETO afirmar que

a) dados e instruções são armazenados em uma memória de leitura e escrita.


b) o conteúdo da memória é endereçado por uma posição, independente do tipo
de dado armazenado nesse local.
c) o fluxo de execução das instruções é sequencial, exceto se houver um desvio
explícito.
d) o hardware é projetado para uma classe específica de aplicações
(programas).

Prof. Rômulo Santos – romulodba@gmail.com 19 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q11) FCC – TRT – 16ª REGIÃO/MA (2014): Tecnologia da Informação

A arquitetura de Von Neumann foi uma das primeiras arquiteturas de


computadores utilizada para a implementação da grande maioria dos sistemas
computacionais. Entretanto, e devido à limitação de desempenho dessa
arquitetura, foi criada a arquitetura Harvard, cuja principal diferença, em relação
à Von Neumann, é
a) utilizar memórias secundárias denominadas Registradores no lugar das
memórias Cache.
b) possuir memória Cache de níveis L2 e L3 ao invés de L1 e L2.
c) possuir barramentos independentes para o acesso ao programa e ao dado.
d) realizar o processamento de instruções gráficas em uma GPU.
e) utilizar o conceito de memória virtual para aumentar a velocidade de acesso
ao programa.

Prof. Rômulo Santos – romulodba@gmail.com 20 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q12) VUNESP – UNESP – (2013): Tecnologia da Informação

Em relação à conhecida Arquitetura Harvard de computadores, é correto afirmar


que
a) é constituída por uma Unidade de Controle, uma Unida- de Lógica e Aritmética
e uma Memória
b) ela se diferencia de outras arquiteturas por possuir dois conjuntos separados
de memória: um para dados e outro para instruções.
c) ela possui um repertório com mais instruções do que o repertório da
Arquitetura de von Neumann.
d) o seu desempenho, quando comparado com a Arquitetura de von Neumann, é
inferior.
e) uma de suas desvantagens é a impossibilidade de leitura de instruções e
operandos simultaneamente

Prof. Rômulo Santos – romulodba@gmail.com 21 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q13) VUNESP – CTA – (2013): Tecnologia da Informação

A Arquitetura Harvard de computadores tem como uma de suas características


marcantes o fato de

a) acessar a memória de dados separadamente da memória de programa.


b) utilizar três tipos diferentes de memórias, com acessos independentes.
c) dissipar menos calor quando comparada com a Arquitetura de von Neumann.
d) dissipar menos calor quando comparada com a Arquitetura de von Neumann.
e) não precisar se utilizar do recurso de interrupções para realizar operações de
entrada/saída de dados.

Prof. Rômulo Santos – romulodba@gmail.com 22 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q14) CESGRANRIO – PETROBRAS – (2014): Tecnologia da Informação

Em um modelo abstrato do computador moderno, que segue o modelo de Von


Neumann, deve existir uma CPU, sigla em inglês para Unidade Central de
Processamento, composta de

a) microprocessador, placa-mãe e fonte


b) registradores, unidade de controle e unidade lógica e aritmética
c) placa mãe, placa de vídeo e disco
d) unidade lógica e aritmética, memória RAM e memória ROM
e) microcódigo, sistema operacional e software do usuário

Prof. Rômulo Santos – romulodba@gmail.com 23 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q15) CESPE – STF (2013): Analista Judiciário

Acerca da organização de computadores, julgue o item subsequente.

Arquiteturas computacionais do tipo von Neumann são caracterizadas por


utilizarem processadores com vários núcleos no mesmo chip.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 24 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q16) CESPE – Banco da Amazônia (2010): Tecnologia da Informação

A máquina proposta por Von Neumann reúne componentes como memória,


unidade aritmética e lógica, unidade central de processamento (UCP), composta
por diversos registradores, e unidade de controle.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 25 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q17) UFMT – UFMT (2014): Engenharia da Computação

Sobre a arquitetura von Neumann, analise as assertivas a seguir.


I - Os dados e instruções são armazenados em duas memórias distintas de
leitura e escrita.
II - O conteúdo da memória é endereçado pela sua posição, independentemente
dos tipos de dados nela contidos.
III - A execução de instruções ocorre de modo sequencial, exceto quando essa
sequência é explicitamente alterada.
Estão corretas as assertivas
a) I e III, apenas.
b) I e II, apenas.
c) II e III, apenas.
d) I, II e III.
Prof. Rômulo Santos – romulodba@gmail.com 26 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q18) FGV – TJ/BA (2015): Analista Judiciário

O matemático John Von Neumann desenvolveu uma arquitetura que fundamenta os


projetos atuais dos computadores. A respeito dessa arquitetura, considere V para a(s)
afirmativa(s) verdadeira(s) e F para a(s) falsa(s):
( ) Os dados e as instruções são armazenados em várias memória de leitura e escrita.
( ) O conteúdo dessa memória é endereçado pela sua posição, independentemente do
tipo de dados nela contido.
( ) A execução de instruções ocorre de modo matricial, exceto quando o programa altere
a instrução para a seguinte.
A sequência correta é:
a) V – V – V;
b) V – F – F;
c) V – F – V;
d) F – V – V;
e) F – V – F.
Prof. Rômulo Santos – romulodba@gmail.com 27 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
Um programa pode ser definido como uma sequência de instruções que descrevem
como executar uma determinada tarefa. Uma instrução consiste em um comando para o
processador. Linguagem de máquina corresponde ao conjunto de instruções primitivas
do computador. Devem ser simples, reduzindo a complexidade e custo dos circuitos.
Há uma diferença muito grande entre aquilo que é conveniente para nós, humanos, e
aquilo que convém aos computadores. Uma solução é a construção de um conjunto de
instruções mais próximo das pessoas (L1) do que as linguagens de máquina, nativas do
processador (L0). No entanto, deve-se assegurar que os programas escritos em L1
sejam executados em L0. Essa estratégia permite livrar o programador dos problemas de
ter que expressar algoritmos em uma linguagem mais apropriada a máquinas do que a
humanos.
Obs:. cabe-se ressaltar que uma máquina pode, com a tecnologia atual, utilizar
linguagem de alto nível como linguagem de máquina. Porém é inviável sua construção
física a partir de circuitos eletrônicos, pois sua relação custo/benefício é desfavorável.
Prof. Rômulo Santos – romulodba@gmail.com 28 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
Apenas programa inscritos em L0 poderão ser
executados diretamente por circuitos elétricos, sem
a intervenção de tradutores (compiladores e
montadores) e/ou interpretadores.
Cada conjunto de instruções (linguagem) escritos em
um nível mais alto são criados visando aproximar-se
da linguagem humana.
Os computadores modernos são projetados como
uma série de níveis, cada um deles construído em
cima se seus precusores. Cada nível representa
uma abstração distinta, com diferentes objetos e
operações presentes em cada um deles. Se projetarmos e analisarmos os computadores
desta maneira, estaremos sempre aptos a ignorar temporariamente os detalhes
irrelevantes, reduzindo uma questão complexa a algo muito mais fácil de ser entendido.
Prof. Rômulo Santos – romulodba@gmail.com 29 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
O nível 5 possui uma linguagem que
aproxima-se da compreensão humana.
Já o nível 0 tem uma linguagem de
fácil compreensão pela máquina.
Porém, existem etapas a ser vencidas
de forma que o programa escrito em
uma linguagem próxima a humana seja
entendida pela máquina.
Dessa forma, cada linguagem usa a sua
antecessora como base, de modo que o
computador que use essa técnica, pode
ser visto como um conjunto de camadas
ou níveis, um em cima do outro.
Prof. Rômulo Santos – romulodba@gmail.com 30 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
O nível 0, o mais baixo, é composto
pelo hardware da máquina. Seus
circuitos executam programas na
linguagem de nível 1.
Cabe mencionar a existência de um
outro nível abaixo do nível 0 (nível dos
dispositivos) área de domínio dos físicos,
engenheiros elétricos e eletrônicos.
O nível da lógica digital é composto
pelas portas lógicas que combinadas
formam os principais dispositivos da
computação, dentre eles, o processador.

Prof. Rômulo Santos – romulodba@gmail.com 31 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
O nível 1 (nível da microarquitetura)
é composto por um conjunto de registra-
dores que formam uma memória local e
um circuito chamado ULA (Unidade
Lógica e Aritmética) que é apto a
realizar operações aritméticas muito
simples. Os registradores são conecta-
dos à ULA para formar o caminho de
dados, estrutura sobre a qual os dados
fluem. Serve para interpretar o nível 2.
O caminho de dados pode ser controla-
do por sofware (microprograma) ou por
hardware (hardwired). Aqui são
buscadas, decodificadas e executadas
instruções, uma a uma.
Prof. Rômulo Santos – romulodba@gmail.com 32 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
O nível 2 (nível da arquitetura do
conjunto de instruções ou ISA –
Instruction Set Architecture). É aqui
onde se descreve como as instruções
são executadas interpretativamente
pelo microprograma ou como são
executadas pelo hardware.

O nível 3 (nível do sistema operacional)


apresenta a maior parte das instruções
em linguagem de nível 2, um conjunto de
novas instruções, organização diferente
da memória, capacidade de execução
de dois programas em paralelo.

Prof. Rômulo Santos – romulodba@gmail.com 33 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Arquitetura Multinível ou máquina de vários níveis
O nível 4 corresponde a linguagem de
montagem. Nada mais é que uma
forma simbólica de representação das
linguagens de nível mais baixo, ou seja,
é fornecido um método de escrever
programas para as camadas 1, 2 e 3
de forma não muito desconfortável.

As linguagens do nível 5 são projetadas


para serem usadas por programadores
de aplicação (linguagens de alto nível).
Ex: Java, C++, Basic, Pascal, etc.

Prof. Rômulo Santos – romulodba@gmail.com 34 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
O pré-processador atua apenas ao nível do
cógido fonte. Executa algumas funções como
remover comentários de um programa,
interpretar diretivas especiais, expandir
macros, etc.
Realizam um tratamento anterior a compilação.
Nem todas as linguagens suportam o pré-
processamento.
Recebe com entrada um código fonte e retorna
um código fonte com saída (diretivas interpreta-
das, macros expandidas, etc).
Macros são recursos de linguagem de progra-
mação com a finalidade de converter entradas
periféricas em comando e ações no SO (como se fossem comandos abreviados).
Prof. Rômulo Santos – romulodba@gmail.com 35 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
O compilador (tradução) substitui cada
instrução escrita em L1 por uma sequência de
instruções equivalente em L0. Em seguida é
executado o novo programa em L0.
O programa escrito em L1 primeiro é convertido
para outro programa equivalente em L0 (o
programa em L1 pode ser descartado). Depois
o novo programa é carregado na memória
e executado pelo processador. Conversão e
execução em fases distintas.
Programa em L1 pode ser traduzido uma vez e
ser executado inúmeras vezes. Não existe
acesso ao programa fonte na execução.
Após traduzido é gerado o código assembly.
Prof. Rômulo Santos – romulodba@gmail.com 36 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
As fases de um compilador podem ser classificadas
em dois grupos: análise e síntese.

Na fase de análise, encontram-se as fases de análise


léxica, análise sintática e análise semântica. Já na fase
de síntese encontram-se as fases de geração de
código intermediário, otimização e geração de código.

A análise tem como objetivo entender o código fonte


e representá-lo em uma estrutura intermediária.

A síntese constrói o código objeto a partir desta


representação intermediária.

Prof. Rômulo Santos – romulodba@gmail.com 37 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
A fase de análise léxica tem por objetivo ler o
programa fonte e transformar sequências de caracteres
em uma representação interna, denominada itens
léxicos. A saída é um fluxo dos símbolos (tokens).
As expressões regulares são usadas para definir o
token reconhecido pelo analisador lexical.

Por exemplo, suponha a expressão abaixo, descrita


em Pascal:
Res := (A + B) * 1.5;

Os itens léxicos contidos nesta expressão, são:


‘Res’, ‘:=‘ , ‘(‘ , ‘A’ , ‘+’ , ‘B’ , ‘)’ , ‘*’ , ‘1.5’ e ‘;’.

Prof. Rômulo Santos – romulodba@gmail.com 38 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens

- Análise sintática: responsabiliza-se por traduzir os


tokens, e descobrir a relação de uns com os outros.
Ou seja, verifica se os tokens contidos no programa
formam um programa válido ou não (gera-se a árvore
sintática).

- Análise semântica: analisa a árvore sintática gerada


pelo analisador sintático em busca de inconsistências
semânticas. Uma das tarefas mais importantes é a
verificação de tipos ou análise de contexto. É nesta fase
que são detectadas, por exemplo, os conflitos entre
tipos, a ausência de declarações de variáveis, funções
e procedimentos.

Prof. Rômulo Santos – romulodba@gmail.com 39 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Fase de geração de código intermediário: permite a
transformação da árvore sintática na representação
intermediária do código fonte.
- Fase de otimização: analisa o código no formato
intermediário e tenta melhorá-lo, de tal forma que, venha
a resultar um código de máquina mais rápido em tempo
de execução. Uma das tarefas executadas pelo
otimizador é a detecção e a eliminação de movimento
de dados redundantes e a repetição de operações,
dentro de um mesmo bloco de programa.
- Fase de geração de código: tem como objetivo
analisar o código já otimizado e gerar um código
objeto definitivo, para uma máquina alvo. Normalmente
este código objeto é um código de máquina ou um código de montagem.
Prof. Rômulo Santos – romulodba@gmail.com 40 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Interpretação: é uma metodologia que permite
escrever programas em L0 que admitam como
entrada programas escritos em L1. Nesse cenário,
cada instrução de L1 é transformada em uma
sequência de instrução em L0, sequência essa
executada antes do exame da próxima instrução.
Essa técnica não requer a geração de um novo
código em L0 (execução direta). Conversão e
execução na mesma fase.
Programa em L1 deve ser intepretado sempre que
precisar ser executado. Logo, o intepretador
precisa ter acesso ao programa fonte durante a execução.
Pode atuar em diversos níveis da arquitetura multinível (camadas superior e inferior).
Prof. Rômulo Santos – romulodba@gmail.com 41 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Montador (Assembler): mecanismo que permite
a tradução da linguagem de montagem (código
assembly) para o código objeto.
A linguagem de montagem corresponde a uma
forma simbólica de representação das linguagens
dos níveis mais baixos. Ou seja, é notação legível
por humanos para o código de máquina que uma
arquitetura específica usa.
Ainda não é possível a sua execução diretamente
pela máquina (precisa ser linkeditado). A programação direta em linguagem de
montagem requer maior esforço, porém, obtém-se melhor performance.
Não confundir assembler (programa que traduz as instruções da linguagem de
montagem para o código de máquina), com assembly (linguagem de montagem
produzida pelo compilador).
Prof. Rômulo Santos – romulodba@gmail.com 42 www.dominandoti.com.br
Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Linkeditor (linker ou ligador): consiste no programa que liga objetos gerados por um
compilador ou montador formando o “arquivo
executável".
Recebe como entrada arquivos objetos e combina
esses arquivos com outros (arquivos de controle,
bibliotecas, parâmetros, chamadas de funções,
etc) gerando um único arquivo contendo o
código a ser carregado e executado.

Prof. Rômulo Santos – romulodba@gmail.com 43 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Empacotadores: responsável pela compactação de um arquivo executável e geração
de outro arquivo executável, porém, auto extraível.

- É realizada compressão, cifragem e alteração em parâmetros do arquivo executável.


- Ao empacotar um executável é alterada a sua assinatura, ou seja, dificulta a detecção
do arquivo (engenharia reversa).
- Técnica explorada por vírus para se ocultar.

Prof. Rômulo Santos – romulodba@gmail.com 44 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens
- Carregador (loader): coloca um programa em memória e faz o computador executá-lo.
O carregador em geral é um componente do SO ao invés de um programa em separado.
Divide-se em:
- Absoluto (endereçamento fixo): programa é carregado para uma posição específica na
memória (carregado sempre na mesma área de memória).
- Realocável (endereçamento dinâmico): programa pode ser carregado em posições
diferentes da memória.

Prof. Rômulo Santos – romulodba@gmail.com 45 www.dominandoti.com.br


Organização e Arquitetura de Computadores
Métodos de conversão de linguagens

Prof. Rômulo Santos – romulodba@gmail.com 46 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q19) FCC – TRT 11ª Região (2012): Tecnologia da Informação

Segundo Andrew S. Tanenbaum, numa conjugação de hardware, linguagens


interpretadas e linguagens traduzidas, o computador pode ser dividido em uma
máquina de seis níveis. Em um desses níveis, os objetos mais interessantes são
denominados PORTAS, cada uma, contendo uma ou mais entradas para sinais
digitais (representando 0 ou 1) e computando como saída alguma função simples
dessas entradas, como AND ou OR . Trata-se do nível de arquitetura

a) lógico digital.
b) de microarquitetura.
c) de conjunto de instruções
d) do sistema operacional da máquina.
e) de linguagem de montagem

Prof. Rômulo Santos – romulodba@gmail.com 47 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q20) FCC – CEF (2011): Analista de Sistemas

Na arquitetura de computadores, a ALU (Unidade Lógica e Aritmética) é um


circuito que se conecta aos registradores para formar um caminho de dados. Em
termos de linguagem de máquina multiníveis, a ALU situa-se no nível

a) lógico digital.
b) de microarquitetura.
c) de arquitetura de conjunto de instruções.
d) do sistema operacional de máquina.
e) de linguagem de montagem.

Prof. Rômulo Santos – romulodba@gmail.com 48 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q21) CESPE – ANAC (2009): Informática

A respeito de compiladores, ligadores, linguagem de máquina (assembly) e


conceitos associados, julgue próximos itens.

O compilador, em contraste com o montador, opera sobre uma linguagem de alto


nível, enquanto o montador opera sobre uma linguagem de montagem.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 49 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q22) CESPE – FUB (2011): Analista de TI

Acerca dos conceitos de informática, julgue os seguintes itens.

Na programação empregando uma linguagem de alto nível, a utilização de um


compilador implica o uso de um ligador e de um carregador para a correta
execução do programa; por outro lado, a utilização de um interpretador, que
simula a existência de um processador cujas instruções são aquelas da
linguagem de alto nível empregada, torna desnecessárias as etapas de ligação e
carga.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 50 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q23) CESPE – Correios (2011): Analista de TI

A respeito dos componentes (hardware e software) de um computador,


julgue os itens seguintes.

No programa em linguagem de alto nível, os interpretadores executam os passos


definidos para cada instrução e produzem o mesmo resultado que o do programa
compilado. Entretanto, a execução de um programa em linguagem de alto nível
com o uso de interpretadores é mais lenta que a execução de um programa
compilado, uma vez que precisa examinar cada instrução no programa-fonte, à
medida que ela ocorre, e desviar para a rotina que executa a instrução.

Certo

Errado
Prof. Rômulo Santos – romulodba@gmail.com 51 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q24) COVEPE – UFAL (2011): Analista de TI

Em um compilador, o analisador léxico

a) cria uma estrutura de dados.


b) cria o código objeto.
c) cria uma sequência de símbolos.
d) cria uma gramática livre de contexto.
e) cria um código intermediário.

Prof. Rômulo Santos – romulodba@gmail.com 52 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q25) CESPE – SERPRO (2013): Administração de Serviços de TI

Com relação a linguagens de programação, julgue os próximos itens.

O uso de um programa compilador ou um programa interpretador auxilia na


definição da escolha da linguagem de programação a ser utilizada em um
computador.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 53 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q26) CESPE – Banco da Amazônia (2010): Programador

Acerca de programação de computadores, julgue os itens a seguir.

Um interpretador é um programa que lê um código escrito em uma linguagem e o


converte em um código equivalente em outra linguagem. No processo de
conversão, o interpretador relata a presença de erros no código original.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 54 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q27) ESAF – CVM (2010): Analista de Sistemas

O interpretador

a) tem, como vantagem, o tempo gasto toda vez que for executado.
b) é considerado um tradutor que gera módulo-objeto.
c) é o mesmo que loader.
d) é considerado um tradutor que não gera módulo-objeto.
e) tem, como desvantagem, permitir a implementação de dados dinâmicos.

Prof. Rômulo Santos – romulodba@gmail.com 55 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q28) CESPE – Correios (2011): Analista de Sistemas

A respeito dos componentes (hardware e software) de um computador,


julgue os itens seguintes.

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.

Certo

Errado
Prof. Rômulo Santos – romulodba@gmail.com 56 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q29) FCC – TRF 4ª Região (2010): Informática

ASSEMBLER é o programa utilizado para executar os códigos fontes criados em


ASSEMBLY. No contexto da arquitetura de computadores em camadas, esses
termos estão fortemente associados à camada de nível

a) 1. microarquitetura.
b) 2. conjunto de instruções.
c) 3. sistema operacional.
d) 4. linguagem de montagem.
e) 5. linguagem orientada a problemas.

Prof. Rômulo Santos – romulodba@gmail.com 57 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q30) CESGRANRIO – Petrobrás (2008): Analista de Sistemas

Um analista está responsável pelo projeto de um compilador para uma nova linguagem
que sua empresa está desenvolvendo. Este compilador deverá receber como entrada o
código fonte do programa e gerar como saída o código de linguagem de máquina para
um determinado processador e sistema operacional. O analista sabe que um processo
de compilação é dividido em fases e que seu compilador deverá possuir todas as fases
de um típico processo de compilação mesmo que elas NÃO sejam obrigatórias em
outros compiladores. A fase que não faz parte de um processo de compilação e que,
portanto, não seria necessária no projeto do analista é a

a) análise léxica.
b) análise sintática.
c) geração de código intermediário.
d) ligação dos módulos.
e) otimização de código.
Prof. Rômulo Santos – romulodba@gmail.com 58 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q31) CESGRANRIO – IBGE (2010): Analista de Sistemas

Ao realizar testes durante a elaboração de um compilador, um analista descobriu


que havia, no compilador, um erro na checagem de tipos de variáveis em
expressões, permitindo, por exemplo, a multiplicação entre tipos de dados que
não poderia ocorrer. Em compiladores, a checagem de tipos de variáveis em
expressões é uma função do

a) analisador semântico.
b) analisador léxico.
c) otimizador de código.
d) scanner.
e) linker.

Prof. Rômulo Santos – romulodba@gmail.com 59 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q32) CESPE – TRE/MT (2010): Analista Judiciário

Durante a compilação de um código-fonte, a fase do compilador que é


responsável por produzir uma sequência de tokens é a

a) análise léxica.
b) análise semântica.
c) análise sintática.
d) geração de código executável.
e) verificação de tipos

Prof. Rômulo Santos – romulodba@gmail.com 60 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q33) CESPE – INMETRO (2010): Pesquisador

Considere que, em uma linguagem de programação hipotética, um comando


condicional IF exija o uso de THEN, representando a clausula então. Nesse caso,
se a instrução THEN não for usada no código fonte, uma resposta do compilador
na identificação do erro de programação estará

a) no nível léxico.
b) no nível sintático.
c) no nível semântico.
d) no nível lógico.
e) nos níveis sintático e semântico, ao mesmo tempo.

Prof. Rômulo Santos – romulodba@gmail.com 61 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q34) FGV – DETRAN/RN (2010): Programador

São funções realizadas pelo módulo front-end de um compilador:

a) Análise léxica e análise lógica.


b) Análise sintática, análise léxica e análise lógica.
c) Análise sintática e análise lógica.
d) Análise semântica, análise léxica e análise sintática.
e) Análise semântica e análise lógica.

Prof. Rômulo Santos – romulodba@gmail.com 62 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q35) FCC – TRE/SP (2012): Analista de Sistemas

Analise o texto:

Na compilação, a análise consiste em três fases. Em uma das fases, os caracteres ou


tokens são agrupados hierarquicamente em coleções aninhadas com significado coletivo.
Essa fase envolve o agrupamento dos tokens do programa fonte em frases gramaticais,
que são usadas pelo compilador, a fim de sintetizar a saída. Usualmente, as frases
gramaticais do programa fonte são representadas por uma árvore gramatical.

A fase citada no texto é conhecida como análise


a) sintática.
b) semântica.
c) léxica.
d) binária.
e) linear.
Prof. Rômulo Santos – romulodba@gmail.com 63 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q36) FCC – TRT 4ª Região (2011): Analista de Sistemas


Em relação à interpretação e compilação de programas, considere:
I. O programa é executado a partir do arquivo fonte sem que haja a necessidade de gerar
um arquivo objeto e muito menos um executável.
II. Tem como resultado um arquivo objeto com códigos em linguagem de máquina.
III. O linkeditor tem como função unir diversos códigos objetos para gerar um arquivo
executável.
IV. As instruções (ou blocos de instruções) do código fonte vão sendo executadas na
medida em que são traduzidas.
Os itens que se referem, SOMENTE à interpretação de programas são:
a) I e IV.
b) I, III e IV.
c) II e IV.
d) II, III e IV.
e) III e IV.
Prof. Rômulo Santos – romulodba@gmail.com 64 www.dominandoti.com.br
Organização e Arquitetura de Computadores

Q37) CESPE – IBAMA (2013): Analista Ambiental

Julgue os itens a seguir, acerca de sistemas operacionais e conceitos


fundamentais de informática.

Para que seu conteúdo possa ser interpretado por qualquer usuário, um arquivo
binário é gerado por meio de processo de compilação executado por um
programa.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 65 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q38) CESPE – ANATEL (2014): Analista Administrativo

Acerca dos conceitos de computadores e sistemas computacionais, julgue


o próximo item.

A compilação é o processo de análise de um programa escrito em linguagem de


alto nível, denominado programa-fonte, e sua conversão em um programa
equivalente, escrito em linguagem binária de máquina, denominado programa-
objeto.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 66 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q39) CESPE – Polícia Federal (2013): Perito Criminal Federal

Com relação aos conceitos e características de compiladores, julgue os


itens que se seguem.

Interpretador é um tradutor de linguagem que executa o programa fonte de


imediato, em vez de gerar um código objeto a ser executado após o término da
tradução, enquanto o compilador recebe um programa fonte e produz programa
equivalente na linguagem alvo. No caso da linguagem Java, os processadores
combinam compilação e interpretação.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 67 www.dominandoti.com.br


Organização e Arquitetura de Computadores

Q40) CESPE – SEGESP-AL (2013): Perito Criminal Federal

A respeito de softwares básicos e aplicativos, julgue o item subsecutivo.

O interpretador é considerado um tradutor que não gera código-objeto, mas que,


diferentemente do compilador, traduz o programa linha a linha, ou seja, o
programa é executado à medida que é traduzido.

Certo

Errado

Prof. Rômulo Santos – romulodba@gmail.com 68 www.dominandoti.com.br


Gabarito

01 Certo 21 Certo
02 D 22 Certo
03 B 23 Certo
04 E 24 C
05 D 25 Certo
06 A 26 Errado
07 A 27 D
08 B 28 Certo
09 E 29 D
10 E 30 D
11 C 31 A
12 B 32 A
13 A 33 B
14 B 34 D
15 Errado 35 A
16 Certo 36 A
17 C 37 Errado
18 E 38 Certo
19 A 39 Certo
20 B 40 Certo

Prof. Rômulo Santos – romulodba@gmail.com 69 www.dominandoti.com.br