Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
PROGRAMAÇÃO EM BAIXO NÍVEL Professor: Leandro Balico . Universidade Federal de Roraima Departamento de Ciência de Computação DCC501 – Programação Em Baixo Nível PROGRAMAÇÃO EM BAIXO NÍVEL • Conteúdo Organização e Projeto de Computadores - A Interface Hardware/Software, J L Hennessy, D A Patterson, 3a edição, Ed Campus Capítulo 2: Instruções: a Linguagem do Computador PROGRAMAÇÃO EM BAIXO NÍVEL • Avaliação • 1 (uma) Prova Parcial (PP). Assunto: • Todo conteúdo • 1 trabalho prático (TP) • Montador MIPs em Linguagem C • Prova final (PF). Todo o assunto. • Média Parcial (MP): MP = (PP1 + TP1) / 2 • Média Final (MF): MF = (2 x MP + PF) / 3 PROGRAMAÇÃO EM BAIXO NÍVEL Instruções: A Linguagem do Computador . Instruções • Introdução Para comandar o hardware de um computador é preciso falar a sua língua As palavras da linguagem de um computador são chamadas instruções e o seu vocabulário chamado conjunto de instruções Em síntese, o conjunto de instruções é o vocabulário de comandos compreensíveis por uma dada arquitetura de computador Instruções • Introdução Vamos ver o conjunto de instruções de um computador real, na forma escrita pelas pessoas e na forma lida pelo computador Começaremos com uma notação similar a uma linguagem de programação restrita refinaremos essa linguagem passo-a-passo, até chegarmos a linguagem real do computador Veremos o conjunto de instruções MIPS Usaremos o simulador SPIM para experimentar os programas MIPS Depois veremos outros dois conjuntos de instruções: ARM, popularizado em dispositivos embutidos Intel x86, polularizado nos PCs Instruções • Princípios de Projeto As linguagens de computador variam de uma arquitetura para outra como “dialetos de uma língua” Os computadores são construídos a partir de hardware com princípios similares oferecer um mesmo conjunto de operações básicas Um conceito chave é o de programa armazenado: instruções e dados de diferentes tipos podem ser armazenados na memória como sequências de números Meta comum dos arquitetos de computador: uma linguagem que facilite a construção do hardware e do compilador maximize desempenho e minimize custo e consumo Operações aritméticas do MIPS • Instruções add e sub A notação MIPS add a,b,c instrui o computador a somar as duas varáveis b e c e colocar a soma na variável a A notação MIPS sub a,b,c instrui o computador a subtrair as duas variáveis b e c e colocar o resto na variável a A notação é rígida: significa que ela executa apenas uma operação e deve sempre ter três variáveis Manter um número rígido de operandos está em conformidade com o princípio de ter um hardware simples • Primeiro Princípio de Projeto Simplicidade favorece regularidade! Operações aritméticas do MIPS • Exemplo: somar quatro variáveis (a = b+c+d+e) • • • Observações Comentários sempre terminam no final da linha e começam com # Cada linha do programa MIPS deve conter apenas uma instrução (diferente de linguagens de alto nível como C) add a,b,c #a soma de b+c está em a add a,a,d #a soma de b+c+d está em a add a,a,e #a soma de b+c+d+e está em a Operações aritméticas do MIPS • Outros Exemplos • • • Exercício add a,b,c #a soma b+c está em a sub d,a,e #a subtração ae está em d a=b+c; d=ae; Código em C Código em MIPS a=b+c; d=ae; Código em C f=(g+h)(i+j) Código em MIPS Utilize t0 e t1 como temporários Operações aritméticas do MIPS Código em C f=(g+h)(i+j) Código em MIPS add t0,g,h #a soma g+h está em t0 add t1,i,j #a soma i+j está em t1 sub f,t0,t1 #a subtração (g+h)(i+j) está em f Operações aritméticas do MIPS • Implementando o Trabalho prático A notação MIPS add a,b,c e sub a,b,c Escreva um programa em c para ler um arquivo texto de entrada contendo instruções do formato add e sub O programa deve ser capaz de reconhecer cada componente das instruções. opcode add registrador destino (rd) a Primeiro registrador fonte (rs) b segundo registrador fonte (rt) c Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12