Arquitetura de Computadores. Linguagem de Máquina



Documentos relacionados
Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios

Arquitetura de Computadores

MODOS DE ENDEREÇAMENTO

MIPS. Prof. Carlos Bazilio

Sistemas Processadores e Periféricos Aula 2 - Revisão

Aula 14: Instruções e Seus Tipos

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

MIPS ISA (Instruction Set Architecture)

Sistemas de Computação. Instruções de Linguagem de Máquina

SSC0611 Arquitetura de Computadores

SSC0114 Arquitetura de Computadores

Computadores de Programação (MAB353)

Organização e Arquitetura de Computadores I

Computadores de Programação (MAB353)

Arquitectura de Computadores

Conjunto de Instruções. Conjunto de Instruções

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Organização e Arquitetura de Computadores I

CISC - Complex Instruction Set Computer

Organização e Arquitetura de computadores

Anotações da 2a Edição

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Conjunto de Instruções e Arquitectura p.1

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Computador: Hardware + Software

Organização e Arquitetura de Computadores I

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Infraestrutura de Hardware. Instruindo um Computador

Conjunto de Instruções

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Relembrando desempenho...

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes.

Relembrando desempenho...

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

RISC simples. Aula de Março de

Organização de Computadores 1

Representando Instruções no Computador

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Conjunto de Instruções MIPS

Linguagem de Montagem 2. Operações e Operandos

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

ARQUITECTURA DE COMPUTADORES

Introdução à Arquitetura de Computadores

Organização de Computadores

Escreva um programa em código assembly correspondente ao seguinte programa C.

Especificação do Projeto de Processador RISC

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Infra-estrutura de Hardware

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans lui+ori syscall 1. .text 2. main: $s0, string 3.

Descrição e análise da implementação em Assembly MIPS da função itoa

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Arquitetura de Computadores Moderna

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Arquitetura de Computadores

Cap - 3: Linguagem de Máquina - MIPS

Nível Máquina Formatos de Instruções

Faculdade de Computação

Predição de Desvios e Processadores Superescalares Especulativos

Microcontroladores e Interfaces

Arquitetura de Computadores MIPS

Lista de Revisão para a Primeira Avaliação

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Conjunto de Instruções MIPS Parte IV

Capítulo 3. Instruções: Aritmética MIPS

Questionário Arquitetura e Organização de Computadores

Capítulo 3. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

Organização de Computadores Como a informação é processada?

Sistemas Processadores e Periféricos Aula 3 - Revisão

Caminho dos Dados e Atrasos

Sumário. Aula Anterior. Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits.

Para os problemas seguintes considere os 5 andares de pipelining do MIPS:

Paralelismo a Nível de Instrução

Guia Rápido MIPS. Tipos de Dados e Formatações

2. A influência do tamanho da palavra

Conjunto de Instruções MIPS Parte III

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Organização e Arquitetura de Computadores I

Introdução à Engenharia de Computação

Arquitetura de Computadores. Ivan Saraiva Silva

Capítulo 7 Nível da Linguagem Assembly

Sistemas Processadores e Periféricos Aula 5 - Revisão

Pipelining - analogia

Questionário 1 Arquitetura e Organização de Computadores

Organização de Computadores 1

ção de Computadores II

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

O Processador: Via de Dados e Controle

Procedimentos. Sistemas de Computação

2 Formalidades referentes ao trabalho

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

Transcrição:

Arquitetura de Computadores Linguagem de Máquina Ivan Saraiva Silva Formato de Instrução MAC O MIC possui dois formatos de instrução: 4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP ENDEREÇO 16 bits Formato 3 CODOP 1

Conjunto de Instruções MAC Instrução Mnemônico Significado 0000xxxxxxxxxxxx LODD X AC := M[X] 0001xxxxxxxxxxxx STOD X M[X] := AC 0010xxxxxxxxxxxx ADDD X AC := AC + M[X] 0011xxxxxxxxxxxx SUBD X AC := AC - M[X] 0100xxxxxxxxxxxx JPOS X If AC 0; PC := X 0101xxxxxxxxxxxx JZER X If AC = 0; PC := X 0110xxxxxxxxxxxx JUMP PC := X 0111xxxxxxxxxxxx LOCO AC := X 1000xxxxxxxxxxxx LODL AC := M[SP +X] Conjunto de Instruções do MAC Instrução Mnemônico Significado 1001xxxxxxxxxxxx STOL M[X + SP] := AC 1010xxxxxxxxxxxx ADDL AC := AC + M[SP + X] 1011xxxxxxxxxxxx SUBL AC := AC - M[SP + X] 1100xxxxxxxxxxxx JNEG if AC < 0; PC := X 1101xxxxxxxxxxxx JNZE if AC 0; PC := X 1110xxxxxxxxxxx CALL SP := SP - 1; M[SP] := PC; PC := X 2

Conjunto de Instruções MAC Instrução Mnemônico Significado 1111000000000000 PSHI SP := SP - 1; M[SP] := M[AC] 1111001000000000 POPI M[AC] := M[SP] SP := SP + 1; 1111010000000000 PUSH SP := SP - 1; M[SP] := AC 1111011000000000 POP AC := M[SP]; SP := SP + 1; 1111100000000000 RETN PC := M[SP]; SP := SP + 1; 1111101000000000 SWAP TMP := AC; AC := SP; SP := TMP 11111100yyyyyyyyy INSP SP = SP + Y 11111110yyyyyyyyy DESP SP := SP - Y MAR MBR RD WR ULA P A S C C P I R T I R A B 0 1-1 A B C D E M M F 16 Z N 3

Programação no MIPS Programação no MIPS A notação em assembly do MIPS usa add a, b, c # que significa a = b + c Sub a, b, c # que significa a = b - c sub add Ordem dos operandos indica operandos fonte e destino 4

Programação no MIPS Para somar os conteúdos de b, c, d e e add a, b, c # a = b + c add a, a, d # a = (b+c) + d add a, a, e # a = (b+c+d) + e Cada linha do programa tem apenas uma instrução Os operandos das instruções MIPS precisam ser um registrador O conteúdo de um registrador Programação no MIPS A ISA MIPS usa três formatos de instrução 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op rs rt rd shamt funct Formato tipo R (Operações entre registradores) 6 bits 5 bits 5 bits 16 bits op rs rt constante ou endereço Formato tipo I (Endereçamento imediato) 5

Programação no MIPS A ISA MIPS usa três formatos de instrução 6 bits 26 bits op constante ou endereço Formato tipo J (Saltos e chamada de procedimentos) Uso de Registradores no MIPS 32 registradores estão disponíveis no MIPS $s0, $s1, $s2, # para variáveis $t0, $t1, $t2, # para temporários A palavra do MIPS é de 32 bits Registradores também têm 32 bits 6

Uso de Registradores no MIPS Registrador Número Uso Preservado na chamada? $zero 0 Valor 0 n.a. $at 1 Assembler temporary N $v0-$v1 2-3 Resultados (procedimentos) N $a0-$a3 4-7 Argumentos (procedimentos) N $t0-$t7 8-15 Temporários N $s0-$s7 16-23 Valores salvos S $t8-$t9 24-25 Temporários N $gp 28 Ponteiro global S $sp 29 pilha S Sfp 30 quadro S $ra 31 retorno S Instruções de Formato R op: opcode operação básica da instrução rs: registrador do primeiro operando de origem rt: registrador do segundo operando de origem rd: registrador do operando destino shamt: Quantidade de deslocamento funct: função define uma variante da operação 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op rs rt rd shamt funct Formato tipo R 7

Representando Instruções Tipo R Exemplo: Como codificar: add $t0, $s1, $s2 op 6 bits rs 5 bits rt 5 bits rd 5 bits shant 5 bits funct 6 bits 000000 10001 10010 01000 00000 100000 add (17 = $s1) (18 = $s2) (8 = $t0) Instruções do Formato R Instruções aritméticas add $s0, $s1, $s2 sub $s0, $s1, $s2 Instruções lógicas (entre registradores) AND bit-a-bit and $t0, $t1, $t2 OR bit-a-bit or $t0, $t1, $t2 NOR bit-a-bit nor $t0, $t1, $t2 # $t0 = NOT ($t1 OR $t2) 8

Instruções do Formato R Instruções de deslocamento Shift à esquerda sll $t2, $s0, 4 # $t2 = shift a esquerda de $s0 de 4 bits O campo shamt indica o tamanho do deslocamento Shift à direita Codificado no Campo shamt srl $t2, $s0, 4 # $t2 = shift a direita de $s0 de 4 bits Codificado no campo shamt Instruções do Formato R Teste de igualdade ou desigualdade slt $t0, $s3, $s4 # $t0 = 1 se $s3 < $s4; cc $t0 = 0 Retorno de procedimento jr $ra Instrução de retorno incondicional de procedimento Salta para o endereço armazenado em $ra Esta instrução é usada coma a última instrução de um procedimento A instrução de salto para procedimento é a instrução jal (tipo J) 9

Instruções do Formato I Permite a utilização de constantes e operandos Imediatos As vezes é importante evitar o tempo de carga (load) de uma constante O MIPS faz isto com endereçamento imediato Aumenta da velocidade de execução Instruções do Formato I Instruções aritméticas addi $s3, $s3, 4 # $s3 = $s3 + 4 4 é um operando imediato O operando imediato é codificado na instrução Instruções lógicas Codificado no andi $t0, $t1, 100 campo constante ou endereço de ori $t0, $t1, 100 16 bits Teste de igualdade ou desigualdade slti $t0, $s2, 10 # $t0 = 1 se $s2 < 10; cc $t0 = 0 10

Instruções do Formato I Instruções de controle de fluxo Desvios Condicionais beq $s3, $s4, label # salte para label se ($s3 = $s4) bne $s3, $s4, label # salte para label se ($s3 $s4) Carga e armazenamento envolvendo a memória lw $t0, 32 ($s3) # salte para label se ($s3 = $s4) sw $t0, 32($s3) Instruções do Formato I Carga e armazenamento menores que uma palavra lh $s1, 100($s2) # load meia palavra (2 bytes) $s1 = M(($s2 + 100) sh $s1, 100($s2) # store meia palavra (2 bytes) M(($s2 + 100) = $s1 lb $s1, 100($s2) # load um byte sb $s1, 100($s2) # store um byte 11

Instruções do Formato I Carga e armazenamento menores que uma palavra lui $t0, 255 # carrega constante nos 16 bits mais significativos de $t0 Instruções do Formato J Desvios Incondicionais j label # salte para label de forma incondicional A instrução jump usa um formato chamado formato j Chamada de procedimento jal label # label é o endereço do procedimento Para executar um procedimento é necessário garantir certos recursos... 12

Programação no MIPS Exemplo if (i == j) f = g + h; else f = g h; Supor i e j armazenados em $s3 e $s4 f, g e h estão armazenados em $s0, $s1 e $s2 bne $s3, $s4, Else # PC = Else se $s3 $s4 add $s0, $s1, $s2 # f = g + h j Exit; Else: sub $s0, $s1, $s2 # # f = g - h Exit: Programação no MIPS Exemplo While (save[i] = = k) i += 1; Supor i e k armazenados em $s3 e $s5 Precisamos do endereço de do array save Supor que o endereço base do array save armazenada em $s6. Loop: sll $t1, $s3, 2 # $t1=4*i add $t1, $t1, $s6 # save = (4*i) + $s6 lw $t0, 0($t1) # $t0 = save(i) bne $t0, $s5, Exit # sai se i k addi $s3, $s3, 1 # i = i + 1 j Loop # vá para Loop Exit: 13

Procedimentos no MIPS Para a execução de um procedimento é necessário: Colocar parâmetros em um local conhecido do procedimento Transferir o controle para o procedimento Adquirir recursos de armazenamento para o procedimento Realizar a tarefa desejada Colocar o valor de retorno em um valor conhecido por quem chamou o procedimento Retornar ao ponto de origem Procedimentos no MIPS Registradores e procedimentos $a0 a $a3 - Quatro registradores para passar parâmetros $v0 e $v1 Dois registradores para valores de retorno $ra Registrador de endereço de retorno ao ponto de origem Mais registradores Para usar mais registradores para parâmetros ou valores de retorno usa-se o $sp (apontador de pilha) 14

Programação no MIPS Exemplo procedimento int exemplo (int g, int h, int i, int j) { int f; f = (g + h) (I + j) } g, h, i e j usam os registradores de argumento $a0 a $a3 f corresponde a $s0 Preparando a execução do procedimento addi $sp, $sp, -12 sw $t1, 8($sp) # empilha $t1 sw $t0, 4($sp) # empilha $t0 sw $s0, 0($sp) # empilha $s0 Executando o procedimento add $t0, $a0, $a1 # $t0 contém g + h add $t1, $a2, $a3 # $t1 contém i + j sub $s0, $t0, $t1 # f = $t0 - $t1 Programação no MIPS Armazenando valor de retorno add $v0, $s0, $zero Preparando o retornoimento lw $s0, 0($sp) # restaura $s0 lw $t0, 4($sp) # restaura $t0 lw $t1, 8,($sp) # restaura $t1 addi $sp, $sp, 12 # ajusta a pilha jr $ra # retorna para o chamador 15

Modos de endereçamento Dois formatos envolvem constantes ou endereços da memória Formato I: constantes ou endereços de 16 bits Desvio máximo de 2 16, insuficiente para os dias atuais. Solução é usar o salto relativo a um registrador PC = Registrador + Endereço de desvio PC = (PC + 4) + Endereço de desvio (em # de palavras) Formato J: Constantes ou endereços de 26 bits Desvio máximo de 2 26, podes ser insuficiente Modos de endereçamento O MIPS disponibiliza cinco modos de endereçamento Endereçamento em registrador O operando é um registrador O endereço é o endereço do registrador (formato R) Endereçamento de base ou deslocamento O operando está na posição de memória apontada pela soma de um registrador com uma constante na instrução Ex. lw $t0, 4($sp) 16

Modos de endereçamento Endereçamento Imediato O operando é uma constante na instrução Ex. addi $A0, $A0, -1 Endereçamento relativo ao PC O endereço é a soma do PC com uma constante na instrução Endereçamento Pseudodireto O endereço do jump são os 26 bits do campo endereço da instrução concatenados com os 4 bits superiores de PC Programação no MIPS Estudo de caso Com o que foi visto até agora tente escrever em assembly do MIPS o algoritmo ao lado Identifique o que o algoritmo faz int X, S = 4, D = 2, R = 1, T = 0; cin >> X; While (T >= 0) { } R = R+1; D = D+2; S = S+D+1; T = X S; 17

Atividades Recomendadas Baixar o simulador MARS http://courses.missouristate.edu/kenvollmar/mars/ Estudar o capítulo 2 do livro: até a seção 2.9. Exercitar-se no uso do simulador MARS 18