Buscar

02 - Linguagem de Maquina I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura e Organização de 
Computadores
Instruções: A linguagem de máquina
Parte I
Prof. Sílvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
1
Organização de um computador
 Cinco componentes clássicos:
 Entrada
 Saída
 Memória
 Caminho de Dados
 Controle
2
Organização de um computador
3
Introdução
 Para controlar o hardware de um computador é preciso 
falar da sua linguagem
 As palavras da linguagem são chamadas de instruções
 Seu vocabulário é denominado conjunto de instruções
ou ISA (Instructions Set Architecture)
 Objetivos dos projetistas de computador
 Encontrar uma linguagem que facilite o projeto do hardware e 
do compilador enquanto maximiza o desempenho e minimiza o 
custo
 Esse objetivo é antigo...
4
Introdução
“É fácil ver, por métodos lógicos formais, que existem certos 
[conjuntos de instruções] que são adequados para controlar 
e causar a execução de qualquer sequencia de operações... 
As considerações realmente decisivas, do ponto de vista 
atual, na seleção de um [conjunto de instruções], são mais 
de natureza prática: a simplicidade do equipamento exigido 
pelo [conjunto de instruções] e a clareza de sua aplicação 
para os problemas realmente importantes, juntos com a 
velocidade com que tratam esses problemas.”
Burks, Goldstine e von Neumann, 1947
5
Princípios de Projeto
 Princípio 1:
 Simplicidade favorece a regularidade
 Princípio 2:
 Menor significa mais rápido
 Princípio 3:
 Agilize os casos mais comuns
 Princípio 4:
 Um bom projeto exige bons compromissos
6
Por que MIPS?
 Típico conjunto de instruções da década de 1980
 Instruções simples, sempre realizando uma única 
operação
 As instruções possuem tamanho fixo de 32 bits.
 No total, o MIPS possui 32 registradores. 
 Cada um deles, de 32 bits
 Está em quase 100 milhões de processadores até 2002
 Quem usa?
 ATI Techologies, Broadcom, Cisco, NEC, Nintendo, Sili on
Graphics, Sony, Texas Instruments e Toshiba, entre outros
7
Operações do Hardware do 
Computador
 Todo computador precisa ser capaz de realizar aritmética
 Notação assembly do MIPS
add a, b, c
 Instrui a somar as variáveis b e c e guardar em a
 A sequência de instruções soma 4 variáveis
add a, b, c # A soma b+c é colocada em a
add a, a, d # A soma b+c+d é colocada em a
add a, a, e # A soma b+c+d+e é colocada em a
8
Operações do Hardware do 
Computador
 O número de operandos em operações como a adição é 
3: os dois números sendo somados e um local para 
colocar a soma
 Exige que cada instrução tenha exatamente 3 endereços, 
de acordo com a filosofia de manter o hardware simples
 Princípio de projeto 1:
 Simplicidade favorece a regularidade
9
Instruções para soma e subtração
 E no caso de uma atribuição mais complexa, 
como por exemplo?
 f = (g + h) – (i + j);
 Neste caso, é necessário gerar mais de uma 
instrução.
 Temos também de utilizar variáveis temporárias.
10
Instruções para soma e subtração
 f = (g + h) – (i + j);
 Assembly final:
add t0, g, h
add t1, i, j
sub f, t0, t1
 E aí pessoal, assembly é ou não é fácil? 
11
Assembly do MIPS
12
Categoria Instrução Exemplo Significado Comentário
Aritmética
Add add a, b, c a = b + c Sempre 3 operandos
Subtract sub a, b, c a = b - c Sempre 3 operandos
Registradores no MIPS
 Operandos do hardware de um computador
 Ao contrário dos programas nas linguagens de alto
nível, os operandos das instruções aritméticas são
restritos.
 Os operandos de uma instrução aritmética são os
registradores.
 Lembrem-se que no MIPS só temos 32 registradores.
 Qual o motivo para termos uma quantidade tão
pequena de registradores?
 Princípio de Projeto 2: “Menor significa mais rápido”
13
Registradores no MIPS
 Os nomes dos registradores MIPS obedecem ao
seguinte padrão:
 Utilizamos “$” seguido por dois caracteres para
representar um registrador.
 $s0, $s1, $s2,... representam os registradores que
correspondem às variáveis dos programas em C e
Java.
 $t0, $t1, ... Representam os registradores que
armazenam valores temporários.
14
Registradores no MIPS
 Logo, para o programa anterior, teríamos:
 f = (g + h) – (i + j);
Assembly
add t0, g, h
add t1, i, j
sub f, t0, t1
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
15
Registradores no MIPS
 Pergunta:
 O processador MIPS possui apenas 32 registradores.
Como fazemos para trabalhar com variáveis
complexas cuja quantidade de registradores do MIPS
é insuficiente para armazená-las?
16
Instruções para transferência de 
dados
 Utilizando a memória principal.
 Para realizarmos a transferência de um word da
memória para um registrador, utilizamos a instrução
lw (load word).
 Sintaxe:
 lw $r1, const($r2)
 $r1 é o registrador que armazena o conteúdo da memória.
 const representa um valor constante que é somado ao
endereço presente no registrador $r2.
17
 A memória principal
 Cada endereço da memória
externa representam células
de 8 bits (1 byte).
 A instrução lw carrega um
word da memória principal.
 Logo, se dermos um lw no
endereço 0, receberemos os
dados do endereço 0, 1, 2 e
3.
Memória 
Principal
0
1
2
3
...
9
1
11
12
31
...
13
Instruções para transferência de 
dados
18
Instruções para transferência de 
dados
 Qual código assembly para o seguinte trecho de 
código, considere A um array de inteiros com o 
endereço base armazenado em $s3 e a variável h em 
$s2 e g em $s1?
g = h + A[8];
lw $t0,32($s3);
add $s1,$s2,$t0;
 Porque 32?
 Porque cada posição do array ocupa 1 palavra (4 bytes ou
32 bits). Lembrem-se que cada endereço sinaliza para uma
célula de 1 byte apenas. Logo, para acessarmos o inteiro
na posição 8, temos de pular os 8 inteiros que aparecem
antes no array, assim temos: 4 * 8 = 32
19
Endianness
 Grande parte dos processadores fazem
restrição com relação ao endereço em que
começam suas palavras.
 No Mips, por exemplo, suas palavras precisam
começar em endereços que sejam múltiplos de 4.
 Esse requisito é denominado restrição de
alinhamento.
 Com relação ao byte de endereçamento, os
processadores podem ser big endian ou little
endian.
20
Endianness
 Processadores Big-Endian numeram os bytes
dentro de uma palavra (word) de forma que o
byte com o valor mais baixo é o mais à
esquerda.
21
Endianness
 Processadores Little-Endian numeram os bytes
dentro de uma palavra (word) de forma que o
byte com o valor mais baixo é o mais à direita.
22
Instruções para transferência de 
dados
 A instrução que desempenha função inversa
ao load word (lw) é a instrução store word (sw).
 Basicamente ela transfere o conteúdo de um
registrador para um endereço específico da
memória principal.
 Sintaxe:
 Similar ao do lw.
 sw $r1, const($r2)
 $r1 contém o valor a ser armazenado no endereço
indicado em $r2
23
Instruções para transferência de 
dados
 Exemplo:
 A[12] = h + A[8];
 Considerando que h está em $s2 e A em $s3
lw $t0, 32($s3) # reg. $t0 recebe A[8] 
add $t0, $s2, $t0 # reg. $t0 recebe h+A[8]
sw $t0, 48($s3); # A[12] recebe h+A[8]
24
Instrução para soma com 
constantes
 addi (Adição Imediata).
 Para evitar o overhead de termos de ler uma constante da
memória para depois utilizá-la em uma soma, MIPS dá
suporte a uma instrução especial, o addi.
 Basicamente, ela realiza uma soma com um valor
constante.
 Sintaxe:
 addi $r1, $r2, const # armazenao valor de $r2 + const no reg. $r1.
 Essa instrução obedece ao princípio de projeto 3:
 “Agilize os casos mais comuns”
 Realmente ele é um caso comum, pois soma com
constantes representam um percentual bastante elevado
do código.
 Lembrem-se que grande parte dos laços fazem uso desta
instrução.
25
Assembly do MIPS
26
Categoria Instrução Exemplo Significado Comentário
Aritmética
Add add $s1, $s2, $s3 $s1 = $s2+$s3 3 operandos; dados registradores
Subtract sub $s1, $s2, $s3 $s1 = $s2-$s3 3 operandos; dados registradores
Add Immediate addi $s1, $s2, 100 $s1 = $s2+100 Usada para somar constantes
Transferência 
de dados
Load word lw $s1, 100($s2) $s1 = Mem[$s2+100] Dados da mem. para o registrador
Store Word sw $s1, 100($s2) Mem[$s2+100] = $s1 Dados do registrador para a mem.
Representação das instruções em 
linguagem de máquina.
 Humanos aprendem a pensar na base 10, mas os
números podem ser representados em qualquer
base
 123 base 10 = 1111011 base 2
 No HW do computador, os números são mantidos
como uma série de sinais eletrônicos altos e baixos,
por isso são considerados base 2
 Todas informação é composta por dígitos binários
ou bits
 As instruções também são mantidas como uma
série de bits e podem ser representadas como
números
27
Representação das instruções em 
linguagem de máquina.
 No assembly do MIPS, os registradores $s0 a $s7
são mapeados de 16 a 23, e os reg. $t0 a $t7
de 8 a 15
 Por exemplo a instrução add $t0, $s1, $s2 possui
a seguinte representação:
28
0 17 18 8 0 32
Representação das instruções em 
linguagem de máquina.
 Embora até o momento só termos visto
instruções em assembly, cada uma destas
instruções possui uma correspondência binária.
 A estas instruções, em binário, damos o nome
de linguagem de máquina.
 Para a instrução add $t0, $s1, $s2 temos a
seguinte representação binária:
29
Representação das instruções em 
linguagem de máquina.
 Pode parecer cansativo escrever e ler
sequencias de número binários
 Evitamos esse tédio usando uma base maior:
números hexadecimais (base 16)
eca8 6420 hex
1110 1100 1010 1000 0110 0100 0010 0000 Bin
30
Representação das instruções em 
linguagem de máquina.
 Campos de uma instrução MIPS:
 Instruções tipo-R (de registrador) ou formato R
 op: Operação básica da instrução (opcode)
 rs: registrador do primeiro operando de origem
 rt: registrador do segundo operando de origem
 rd: registrado do operando de destino
 shamt: “shift amount” (quantidade de deslocamento).
 funct: seleciona a variante específica do campo op
(código de função) 
31
Representação das instruções em 
linguagem de máquina.
 Campos de uma instrução MIPS:
 Instruções tipo-I (de imediato) ou formato I.
 op: Operação básica da instrução (opcode)
 rs: registrador do operando de origem
 rt: registrador de destino
 constant or address: constante ou endereço de 
memória.
32
Representação das instruções em 
linguagem de máquina.
 Embora MIPS possua dois diferentes tipos de
formato de instruções, percebam que a
quantidade de bits é a mesma.
 Isso caracteriza o Princípio de Projeto 4, que diz:
 “Um bom projeto exige bons compromissos”.
33
Instruções para operações lógicas
 Operações Lógicas
34
Instruções para operações lógicas
 Sintaxe de uso dos operadores de
deslocamento (sll, srl).
 sll $t2, $s0, 4; # reg $t2 = $s0 << 4 bits.
 Para $s0 = 9, teríamos $t2 = 144;
 Observem o correspondente em instrução de
máquina. Vejam que o campo shamt é utilizado para
sinalizar a quantidade de deslocamento
35
Instruções para operações lógicas
 Sintaxe de uso dos operadores and, nor e or.
 and $t0, $t1, $t2 # reg $t0 = reg $t1 & reg $t2;
 A sintaxe é a mesma para nor e or.
 MIPS não possui uma instrução not.
 Tem como eu obter esta instrução a partir de
uma das instruções acima?
36
Instruções para operações lógicas
 Sim, basta fazermos um NOR (NOT OR) entre o
valor que queremos negar e um registrador
que possua o valor 0.
 A NOR 0 = NOT (A OR 0) = NOT (A)
 nor $t0, $t1, $t3 #reg $t0 = ~(reg $t1 | reg $t3)
37
Assembly do MIPS
38
Categoria Instrução Exemplo Significado Comentário
Aritmética
Add add $s1, $s2, $s3 $s1 = $s2+$s3 3 operandos; dados registradores
Subtract sub $s1, $s2, $s3 $s1 = $s2-$s3 3 operandos; dados registradores
Add Immediate addi $s1, $s2, 100 $s1 = $s2+100 Usada para somar constantes
Lógica
And and $s1, $s2, $s3 $s1 = $s2 & $s3 3 operandos em reg; AND bit a bit
Or or $s1, $s2, $s3 $s1 = $s2 | $s3 3 operandos em reg; OR bit a bit
Nor nor $s1, $s2, $s3 $s1 = ~($s2 | $s3) 3 operandos em reg; NOR bit a bit
And Immediate andi $s1, $s2, 100 $s1 = $s2 & 100 AND bit a bit entre reg. e constante
Or Immediate ori $s1, $s2, 100 $s1 = $s2 | 100 OR bit a bit entre reg. e constante
Shift left logical sll $s1, $s2, 10 $s1 = $s2 << 10 Deslocamento à esquerda por const.
Shift rigth logical srl $s1, $s2, 10 $s1 = $s2 >> 10 Deslocamento à direita por const.
Transferência 
de dados
Load word lw $s1, 100($s2) $s1 = Mem[$s2+100] Dados da mem. para o registrador
Store Word sw $s1, 100($s2) Mem[$s2+100] = $s1 Dados do registrador para a mem.
Referências
 PATTERSON, D. A. ; HENNESSY, J.L. Organização 
e projeto de computadores – a interface 
hardware software. 3. ed. Editora Campus, 
2005.
 Notas de aula do Prof. André Luis Meneses
Silva
39

Outros materiais