Professional Documents
Culture Documents
B E M - V I N D O
Sistemas
Microprocessados
2018
Marcelo Pias
mpias@furg.br
1
4/11/18
Campos da Instrução
Instruções RISC-V opcode: código operação
Codificado como palavras instruçoes de 32-bit rd: registrador destino (número)
Número pequeno de formatos para representar funct3: 3-bit código funcionalidade (opcode adicional)
código da operação (opcode), número de rs1: primeiro registrador de origem (número)
registradores, rs2: segundo registrador de origem (número)
funct7: 7-bit código funcionalidade (opcode adicional)
2
4/11/18
Escreva a única linha de código C que corresponde às duas Traduza o código RISC-V abaixo para C. Considere que as variáveis
instruções abaixo: f, g, h, i e j são linkados aos registradores x5, x6, x7, x28 e x29,
respectivamente. Considere que o endereço base dos arrayx A e B
estão nos registradores x10 e x11, respectivamente.
add f, g, h
add f, i, f
addi x30, x10, 8
addi x31, x10, 0
sd x31, 0(x30)
ld x30, 0(x30)
add x5, x30, x31
Roadmap Roadmap
RISC-V ISA & C-RISC-V (Resumo) RISC-V ISA & C-RISC-V (Resumo)
Execução de Programa Execução de Programa
Chamada de Função Chamada de Função
Chamada de Função: Exemplo Chamada de Função: Exemplo
Mensagem Final … Mensagem Final …
4/11/18 4/11/18
3
4/11/18
temp = v[k];
Programa – v[k] = v[k+1];
Linguagem Alto Nível v[k+1] = temp; Palavras ( “words”) & “vocabulário” são chamados de instructions &
(e.x, C)
Compilado # x12 <-> v[k]; x10 <-> temp;
conjunto de instruções, respectivamente
r
lw x10, 0(x12) # Reg x10 recebe v[k]
Tudo pode ser representado
Programa Linguagem lw
sw
x11, 4(x12)
x11, 0(x12)
# Reg x11 recebe v[k+1]
# v[k] recebe v[k+1] com número RISC-V é um exemplo de conjunto de instruções RISC
Assembly (e.x., RISC-V) sw x10, 4(x12) # v[k+1] recebe v[k]
i.e., data ou instruções
Assembler (Montador)
Programa Linguagem
0000
1010
1001
1111
1100
0101
0110
1000
1010
0000
1111
1001
0101
1100
1000
0110
Formato fixo: uma operação, dois operandos origem, um destino
Máquina (RISC-V) 1100 0110 1010 1111 0101 1000 0000 1001 add,sub,mul,div,and,or,sll,srl,sra
0101 1000 0000 1001 1100 0110 1010 1111
lw,sw,lb,sb p/ mover dado de/para registradores de/para memória
Máquina beq, bne, j p/ decisão/controle de fluxo
Interpretação
Processador Memória
Habilita? Considerando as traduções abaixo
Read/Write Entrada
Controle f → x10 g → x11 h → x12
i → x13 j → x14
Caminho Dados
Programa if (i == j) bne x13,x14,Else
Endereço f = g + h; add x10,x11,x12
PC
Escrita
else j Exit
Dado f = g – h; Else: sub x10,x11,x12
Exit:
Dado
Leitur Saída
a
Dado
4
4/11/18
4/11/18
Roadmap
Assembler (montador) p/ Código de Máquina
RISC-V ISA & C-RISC-V (Resumo)
cachorros.S gatos.S arquivo fonte (Assembler/Montador))
Execução de Programa
Chamada de Função Assembler/Montador converte
Chamada de Função: Exemplo Assembler código em assembly para padrões
Assembler
Mensagem Final … (Montador) de bits de instruções
(Montador)
Programa
Caminho de dados
PC
Programa Endereço
Instrução
Dados
5
4/11/18
CS 61c 31 4/11/18 32
Pseudo-instrução
Sintaxe simplificada para alguns casos especiais
E.x., mv rd, rs = addi rd, rs, 0
E.x.2, li rd, 13 = addi rd, x0, 13
Nomes amigáveis e
simbólicos em
código assembly
34