instruinstruçções de linguagem de mões de linguagem de m...
TRANSCRIPT
![Page 1: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/1.jpg)
Sistemas de Computação
Instruções de Linguagem de Máquina Instruções de Linguagem de Máquina
![Page 2: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/2.jpg)
Sistemas de Computação
Linguagem de montagem do processador MIPS
• Operações aritméticas
Instrução Exemplo Significado
soma add a, b, c a = b + c
subtração sub a, b, c a = b - c
![Page 3: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/3.jpg)
Sistemas de Computação
Compilação de dois comandos em C para MIPS
Segmento doPrograma em C
Segmento doPrograma em MIPS
a = b + c;d = a – e;
add a, b, csub d, a, e
f = (g + h) – (i + j); add t0, g, hadd t1, i, jsub f, t0, t1
![Page 4: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/4.jpg)
Sistemas de Computação
• Operandos aritméticos localizados em registradores
Compilação de dois comandos em C para MIPS
Segmento do Programa em C
Segmento do Programa em MIPS
a = b + c; d = a – e;
add $s0, $s1, $s2 sub $s3, $s0, $s4
f = (g + h) – (i + j); add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1
![Page 5: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/5.jpg)
Sistemas de Computação
Instruções para transferência de dados entre memória e registradores
• Estruturas de dados mais complexas podem conter mais dados que o número de registradores
• Dados armazenados na memória têm que ser transferidos para registradores para operações aritméticas
• As instruções de transferência de dados devem fornecer o endereço na memória do dado a ser acessado
![Page 6: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/6.jpg)
Sistemas de Computação
Instruções para transferência de dados entre memória e registradores
• Instrução para transferir dado da memória para registrador: load word (lw)
• Instrução para transferir dado do registrador para memória: store word (sw)
Processador Memória
100
10
101
1
DadosEndereço
0
1
2
3
![Page 7: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/7.jpg)
Sistemas de Computação
Instruções para transferência de dados entre memória e registradores
• Endereço base armazenado em registrador da instrução
• Endereço da memória formado pelo deslocamento adicionado ao conteúdo do registrador base
Segmento do programa em MIPSSegmento do programa em Clw $t0,8($s3)add $s1, $s2, $t0
g=h+A[8]
![Page 8: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/8.jpg)
Sistemas de Computação
Endereços reais em MIPS
• Endereços se referem a bytes
• Na arquitetura MIPS a palavra é de 32 bits (4 bytes), fazendo com que endereços das palavras difiram por 4.
• Em MIPS endereços das palavras devem sempre começar em múltiplos de 4 (restrição de alinhamento)
Processador Memória
100
10
101
1
DadosEndereço
0
4
8
12
![Page 9: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/9.jpg)
Sistemas de Computação
Instruções para transferência de dados entre memória e registradores
• Endereço base armazenado em registrador da instrução
• Endereço da memória formado pelo deslocamento adicionado ao conteúdo do registrador base
Segmento do programa em MIPS
sw $t0,48($s3)
Segmento do programa em Clw $t0,32($s3)add $t0, $s2, $t0
A[12]=h+A[8]
![Page 10: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/10.jpg)
Sistemas de Computação
Representação das instruções do tipo R
• Cada instrução da linguagem de montagem étraduzida para a linguagem de máquina expressa de forma binária
• Campos das instruções de máquina MIPS:
shamtop rtrd rdrs funct
op: código de operaçãors: registrador com primeiro operando fontert: registrador com segundo operando fonterd: registrador que guarda resultado da operaçãoshamt: deslocamentofunct: código de função
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
![Page 11: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/11.jpg)
Sistemas de Computação
Representação das instruções do tipo R
• Tradução de uma instrução de registrador na linguagem de montagem para linguagem de máquina
• add $t0, $s1, $s2
00 18rd 817 32
op rs rt rd shamt funct
0000010010rd 0100010001 100000
6 bits 5 bits
000000
6 bits 5 bits 5 bits5 bits
![Page 12: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/12.jpg)
Sistemas de Computação
Instruções do tipo R
• Operações aritméticas:– add rd, rs, rt– sub rd, rs, rt
• Operações lógicas:– and rd, rs,rt– or rd, rs, rt– sll rd, rt, shamt– sra rd, rt, shamt– srl rd, rt, shamt– xor rd, rs, rt
![Page 13: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/13.jpg)
Sistemas de Computação
Representação das instruções do tipo I
• Tradução de uma instrução de memória na linguagem de montagem para linguagem de máquina
• lw $t0, 1200($t1)
35 8rd 9 1200
op rs rt endereço
0100rd01001
6 bits 5 bits
100011
5 bits 16 bits
0000 0100 1011 0000
![Page 14: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/14.jpg)
Sistemas de Computação
Representação das instruções de desvio
• Instrução de desvio– beq registrador1, registrador2, L1– bne registrador1, registrador2, L1
Segmento do programa em MIPS
Else: sub $s0, $s1, $s2Exit:
j Exit
Segmento do programa em Cbne $s3, $s4, elseadd $s0, $s1, $s2
if (i==j) f = g+h;else f=g-h;
![Page 15: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/15.jpg)
Sistemas de Computação
Compilando o comando while
Segmento do programa em MIPS
Exit:j Loopadd $s3, $s3, $s4
add $t1,$t1,$s6
Segmento do programa em CLoop: add $t1, $s3, $s3add $t1, $t1, $t1
while (save[i] ==k) i = i+j;
lw $t0,0($t1)bne $t0, $s5, Exit
![Page 16: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/16.jpg)
Sistemas de Computação
Comando switch
• Permite selecionar uma entre diversas alternativas– switch (k) {
case 0: f = i + j; break;case 1: f = g + h; break;case 2: f = g - h; break;case 3: f = i - j; break;}
• Pode ser implementado utilizando-se comandos if-then-else aninhados
• Maneira mais eficiente:– Alternativas são codificadas em uma tabela de endereços,
denominada tabela de endereços de jump– Na execução do comando basta indexar a tabela e ir para o
endereço encontrado na tabela– Instrução de desvio incondicional em MIPS jr
![Page 17: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/17.jpg)
Sistemas de Computação
Implementação com tabela do comando switch
• Estrutura do programa
– obtém end. na tabela de acordo com valor de k
– vai para endereço– L0: f = i + j– L1: f = g + h– L2: f = g - h– L3: f = i - j
• Tabela
k endereço0 L01 L12 L23 L3
![Page 18: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/18.jpg)
Sistemas de Computação
Código gerado para comando switch
# Testa se variável k entre 0 e 3slt $t3, $s5, $zerobne $t3, $zero, Exitslt $t3, $s5, $t2beq $t3, $zero, Exit# Multiplica k por 4 para obter deslocamento na tabelaadd $t1, $s5, $s5add $t1, $t1, $t1# Calcula o endereço corretoadd $t1, $t1, $t4lw $t0, 0($t1)# Vai para o endereçojr $t0#Casos do switchL0: add $s0, $s3, $s4
j ExitL1: add $s0, $s1, $s2
j ExitL2: sub $s0, $s1, $s2
j ExitL3: sub $s0, $s3, $s4Exit:
![Page 19: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/19.jpg)
Sistemas de Computação
Modos de Endereçamento em MIPS
• Palavra de 32 bits
• Memória endereçada a byte
• Cada instrução tem 32 bits
• Os modos de endereçamento indicam como encontrar os operandos das instruções
![Page 20: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/20.jpg)
Sistemas de Computação
Endereçamento por registrador
• Indica o endereço de um registrador
– Ex: add $s0, $t0, $t1 # $s0 = $t0 + $t1
op rs rt rd … funct Registradores
Registrador
6 bits 5 bits5 bits 5 bits
![Page 21: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/21.jpg)
Sistemas de Computação
Endereçamento base mais deslocamento
• Visa reduzir o tamanho das instruções e facilitar o processo de relocação de programas
– indica o endereço de um registrador (base) e um valor relativo àprimeira instrução (deslocamento) endereço efetivo do dado
– Ex: lw $s1, 100($s2) # $s1 = 4 bytes em Memória [$s2 + 100]lb $s1, 100 ($s2) # coloca byte em Memória [$s2+100] nos 8 bits menos significativos de $s1 e estende o sinallh $s1, 100 ($s2) # coloca 2 bytes em Memória [$s2+100] nos 16 bits menos significativos de $s1 e estende o sinal
+Registrador
Endereçoop rs rt
Byte PalavraMeia-palavra
Memória6 bits 5 bits 5 bits 16 bits
![Page 22: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/22.jpg)
Sistemas de Computação
Endereçamento imediato
• Constantes são utilizadas em programas para indexar arrays, contar iterações de loops, por exemplo
• Vários programas possuem mais de 50% de suas operações aritméticas envolvendo constantes
• Como acessar estas constantes ?lw $t0, EndConst6($zero) # $t0 = constante 6
add $s5, $s5, $t0 # soma 6 a $s5
![Page 23: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/23.jpg)
Sistemas de Computação
Endereçamento imediato
• Valor do dado é indicado diretamente no campo operando
• O dado é obtido junto com a instrução
– Ex: addi $s5, $s5, 6 # $s5 = $s5 + 6
op rs rt imediato6 bits 5 bits 5 bits 16 bits
![Page 24: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/24.jpg)
Sistemas de Computação
Instruções aritméticas e lógicas que utilizam endereçamento imediato
• addi rt, rs, imm
• andi rt, rs, imm
• ori rt, rs, imm
• xori rt, rs, imm
• slti rt, rs, imm
![Page 25: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/25.jpg)
Sistemas de Computação
Endereçamento imediato
• Para constantes maiores que 16 bits utiliza-se a instrução lui (load upper immediate)
• Carrega constante nos bits superiores e preenche os inferiores com zero
– Ex: lui $t0,255
001111 00000 01000 0000 0000 1111 11116 bits 5 bits 5 bits 16 bits
0000 0000 0000 00000000 0000 1111 1111$t0
![Page 26: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/26.jpg)
Sistemas de Computação
Endereçamento imediato
• Qual o código em linguagem de máquina do MIPS para carregar a constante abaixo de 32bits no registrador $s0?
0000 0000 0011 1101 0000 1001 0000 0000
![Page 27: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/27.jpg)
Sistemas de Computação
• Utilizado para desvios incondicionais– indica o endereço pela concatenação dos 26 bits da instrução com
os 4 bits mais significativos do PC para formar palavra de 32 bits
– Ex: j 10000
Endereçamento pseudo direto
:PC
EndereçoopMemória
Palavra
26 bits6 bits
![Page 28: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/28.jpg)
Sistemas de Computação• Utilizado para desvios condicionais• Utilizando o campo imediato (16 bits), nenhum
programa poderia ser maior que 216
– Solução: PC= Registrador + Endereço de desvio
• Registrador utilizado é o próprio PC– Pode desviar no intervalo PC-215 a PC+215
– Ex: beq $s1, $s2, 25 # se ($s1 == $s2) desvia para PC + 4 + 100# (cada instrução tem 4 bytes)
Endereçamento relativo ao PC
+PC
Endereçoop rtMemória
rs
Palavra
6 bits 5 bits 5 bits 16 bits
![Page 29: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/29.jpg)
Sistemas de Computação
Compilando o comando while
Exit:j Loopadd $s3, $s3, $s4
add $t1,$t1,$s6lw $t0,0($t1)bne $t0, $s5, Exit
Loop: add $t1, $s3, $s3add $t1, $t1, $t1
endereço 80000 0 19 19 9 0 3280004 0 9 9 9 0 3280008 0 9 22 9 0 3280012 35 9 880016 5 8 2180020 0 19 20 19 0 3280024 280028 ...
instrução
08
80000
![Page 30: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/30.jpg)
Sistemas de Computação
• Substitui-se a instrução beq, por bne e j
• Exemplo:beq $s1,$s2,L1
substituído porbne $s1, $s2, L2
j L1
L2:
Como desviar para mais longe
![Page 31: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/31.jpg)
Sistemas de Computação
• Procedimento para zerar o conteúdo de um array – utilizando índices de arrays
clear1(int array[], int size){
int i;for (i = 0; i < size; i = i+1)
array[i] = 0;}
– utilizando ponteirosclear2(int *array, int size){
int *p;for (p = &array[0]; p < &array[size]; p = p+1)
*p = 0;}
Arrays e ponteiros
![Page 32: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/32.jpg)
Sistemas de Computação• Código gerado para array
move $t0, $zero
loop1: add $t1,$t0,$t0
add $t1,$t1,$t1
add $t2,$a0,$t1
sw $zero,0($t2)
addi $t0,$t0,1
slt $t3,$t0,$a1
bne $t3,$zero,loop1
Arrays e ponteiros - comparação do código gerado
• Código gerado para ponteiro
move $t0, $a0
add $t1,$a1,$a1
add $t1,$t1,$t1
add $t2,$a0,$t1
loop2: sw $zero,0($t0)
addi $t0,$t0,4
slt $t3,$t0,$t2
bne $t3,$zero,loop2
![Page 33: InstruInstruçções de Linguagem de Mões de Linguagem de M …simone/scminter/contaulas/7_LMAQ.pdf · 2016. 9. 6. · Sistemas de Computa ção • Utilizado para desvios condicionais](https://reader033.vdocuments.pub/reader033/viewer/2022060918/60aac07a8c9e9e7e701b38fe/html5/thumbnails/33.jpg)
Sistemas de Computação
• Operações aritméticas podem ler/escrever da/na memória
• Endereçamento da memória podem envolver cálculos complexos
– D(Rb,Ri,S) Mem[Reg[Rb]+S*Reg[Ri]+D]• D: deslocamento de 1,2 ou 4 bytes• Rb: Registrador base: * possíveis registradores• Ri: Registrador de índice: qualquer registrador• S: Escala: 1,2, 4 ou 8
Arquitetura X86 - Propriedades CISC