Você está na página 1de 15

Aula 3 - ARQUITECTURA DE

SISTEMAS DE COMPUTADORES

A Linguagem de Máquina

Msc. Graçane Muhate


Introdução
• Os programadores usam linguagem de alto nível para
desenvolver programas de aplicação; para que o programa
se torne uma forma executável, ele deve ser convertido em
código de máquina (binário).

• A Figura 1 mostra uma linguagem de alto nível (HLL)


convertida em código de máquina, o compilador converte a
HLL em linguagem assembly e, em seguida, o assembler
converte a linguagem assembly em linguagem de máquina
(bits) por assembler.
Introdução (Cont..)
• Cada CPU tem um conjunto de instruções que representa o
tipo de operações que a CPU pode realizar, e essas
instruções são representadas em formas mnemônicas ou
abreviações, por exemplo, a instrução de adição é
representada por "ADD" e a instrução de subtração é
representada por "SUB . ”

• ADD R1, R2, R3 significa adicionar conteúdo de R2 com o


registro R3 e armazenar os resultados no registro R1. R1, R2
e R3 são chamados de operandos.
Introdução (Cont..)

Fig 1. Convertendo HLL em linguagem de máquina


1. A linguagem Assembly
• Os seguintes operandos de HLL são convertidos em linguagem
assembly:

HLL Assembly Language


• R3 = R1+R2 ADD R3, R1, R2
• R3 = R1-R2 SUB R3, R1, R2
1.1. As aplicações da linguagem assembly

• A linguagem assembly é usada para escrever código mais rápido.


• Ajuda a entender melhor a HLL.
• Escrever um compilador para HLL requer conhecimento da linguagem
assembly.
• É usado em sistemas embutidos e driver.
• A HLL pode não fornecer acesso ao hardware, então a linguagem
assembly pode ser usada.
2. Níveis de abstracção num computador
• Na utilização de um computador é possível identificar vários níveis de
abstracção, sendo os mais relevantes, no ãmbito desta disciplina:

• Nível da linguagem máquina (em binário): instruções e variáveis


totalmente codificadas em binário, sendo a codificação das instruções
sempre associada a um dado processador; a sua utilização é pouco
adequada para seres humanos;
2. Níveis de abstracção num computador (cont.)
• Nível da linguagem assembly (tradução literal do inglês: "de montagem"):
equivalente ao nível anterior, mas em vez da notação puramente binária, a
linguagem usa mnemónicas para especificar as operações pretendidas,
bem como os valores ou localizações dos operandos;
• Embora este nível seja melhor manuseado por seres humanos, ele ainda é
inteiramente dependente do conjunto de instruções dum dado
processador, isto é, não é portátil entre processadores de famílias
diferentes, e as estruturas que manipula, quer de controlo, quer de dados,
são de muito baixo nível;

• Nível das linguagens HLL (High Level Languages, como o Java, C, Pascal,
FORTRAN, ...): linguagens mais poderosas e mais próximas dos seres
humanos, que permitem a construção de programas para execução
eficiente em qualquer processador
3. Tradutores ou conversores de níveis
• Dado que o processador apenas "entende" os comandos em linguagem
máquina, é necessário converter os programas escritos em linguagens dos
níveis de abstracção superiores para níveis mais baixos, até eventualmente
se chegar à linguagem máquina. Estes tradutores ou conversores de níveis
são normalmente designados por:
• Assemblers : programas que traduzem os textos escritos em assembly
language para linguagem máquina, onde cada comando compreendido
pelo processador se encontra codificado em binário de acordo com um
formato definido pelo fabricante do processador;
• Compiladores: programas que traduzem os programas escritos em HLL
para um nível de abstracção inferior; a maioria dos compiladores existentes
incluem já os dois passos da tradução para linguagem máquina, isto é,
traduzem de HLL directamente para linguagem máquina binária, sem
necessitarem de um assembler.
3. Tradutores ou conversores de níveis
3. Tradutores ou conversores de níveis
Existe ainda outro mecanismo que permitem executar programas escritos em HLL
sem usar a compilação: a interpretação.
Com um interpretador, as instruções de HLL são analisadas uma a uma, e o
interpretador para cada instrução em HLL, gera o código correspondente em
linguagem máquina e executa de imediato esse código, sem o guardar.
Não há propriamente uma tradução de um programa noutro, mas sim a análise
dum programa seguida de geração e execução do código máquina associado.
Posteriormente se verá ainda que poderão existir outros níveis de abstracção num
computador.
3. Tradutores ou conversores de níveis

• Por não traduzir um programa escrito em linguagem de alto nível


diretamente para linguagem de máquina, o processo de compilação tende
a ser mais rápido que o processo de interpretação. Além disso, uma vez
compilado, um programa pode ser executado várias vezes sem a
necessidade de haver uma recompilação. Já na interpretação, cada vez que
um programa tiver que ser reexecutado, todo o processo de interpretação
deverá ser refeito, independente de ter ocorrido modificações no código
fonte do programa desde sua última execução.

• A vantagem da interpretação fica por conta da possibilidade de testar os


programas ao mesmo tempo em que são desenvolvidos.
4. Arquitectura do conjunto de instruções (ISA)
• Os fabricantes de CPUs publicam um documento que contém
informações sobre o processador, como lista de registros, função de
cada registro, tamanho do barramento de dados, tamanho do
barramento de endereço e lista de instruções que podem ser
executadas pela CPU.

• Cada CPU tem um conjunto de instruções conhecido que um


programador pode usar para escrever um programa em linguagem
assembly. Os conjuntos de instruções são específicos para cada tipo
de processador. Os processadores Pentium usam um conjunto de
instruções diferente do processador ARM. As instruções classificadas
são baseadas no número de operandos ou tipo de operação
4.1. Classificação da instrução baseada no
número de Operandos
• Instruções sem operandos. A seguir estão algumas das instruções
que não requerem nenhum operando:
• HLT Pare a CPU
• NOP Sem operação
• Operando PUSH: coloca o operando no topo da pilha
• Operando POP Remova o operando do topo da pilha
TPC
Apresentar a definição, caracteristicas, métodos de
funcionamento e exemplos:
• Arquitetura do conjunto de instruções (ISA)
• Classificação da instrução baseada no número de Operandos

• Grupo de 3 estudantes.

Você também pode gostar