Conjunto de Instruções MIPS Parte IV

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

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

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

SSC0611 Arquitetura de Computadores

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

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

MIPS ISA (Instruction Set Architecture)

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.

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

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

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

SSC0114 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

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

ARQUITECTURA DE COMPUTADORES

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

Procedimentos. Sistemas de Computação

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

MICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018

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

Relembrando desempenho...

Conjunto de Instruções MIPS Parte III

Relembrando desempenho...

Infraestrutura de Hardware. Instruindo um Computador

Arquitetura de Computadores MIPS

Arquitetura de Computadores

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

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

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

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

Faculdade de Computação

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

[1] $2,$0,$3 105 [2] 0x004000e8

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

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

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

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

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

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

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

MIPS. Prof. Carlos Bazilio

Conjunto de Instruções MIPS Parte I

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Arquitetura de Computadores. Linguagem de Máquina

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski

MICROPROCESSADORES II (EMA911915) NIOS II - ASSEMBLY 2 O SEMESTRE / 2018

Organização e Arquitetura de Computadores I

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.

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Computadores de Programação (MAB353)

Especificação do Projeto de Processador RISC

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

Dicas: Nas linhas 7 e 8 as constantes imediatas são especificadas como caracteres ASCIIE, o que é aceito pelo montador MARS.

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Microcontroladores e Interfaces

ção de Computadores II

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

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

DataPath II Tomando o controle!

Questionário Arquitetura e Organização de Computadores

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

Faculdade de Computação

Arquiteturas de Computadores

Conceitos básicos sobre computadores (continuação)

Sistemas de Computação Gabarito - Lista 2

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

O Processador: Via de Dados e Controle

Cap - 3: Linguagem de Máquina - MIPS

lw, sw add, sub, and, or, slt beq, j

SSC0902 Organização e Arquitetura de Computadores

66 [2] 0x x c

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

9. Software de Sistema - Montadores (capítulo 9 do livro texto)

Infra-estrutura de Hardware

Faculdade de Computação

Organização de Computadores

Arquiteturas de Computadores

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

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

UCP: Construindo um Caminho de Dados (Parte I)

Arquitectura de Computadores ARQC MIPS. Serviços de Sistemas Exemplos. Serviços de Sistema

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Organização e Arquitetura de Computadores I

Linguagens de Programação Classificação

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

PROGRAMAÇÃO I. Introdução

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

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Prof. Gustavo Oliveira Cavalcanti

Organização e Arquitetura de Computadores INTRODUÇÃO

Informática I. Aula 9. Aula 9-17/05/2006 1

Linguagem de Montagem do NeanderX

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 07/outubro/2009

Organização ou MicroArquitectura

Transcrição:

Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Parte IV Transferência de Dados Lógicas Controle Suporte a procedimentos Prof. Sérgio Adaptado dos slides de Sistemas Processadores do Prof. Frank Torres - UFMG Organização de Computadores 1 Organização de Computadores 2 Suporte a procedimentos :: Quadro de procedimento Quadro de Procedimento (Procedure Frame) ou Registro de Ativação: segmento da pilha é usado para salvar o conteúdo dos registradores e armazenar variáveis locais. valor de $sp indica o topo da pilha. Suporte a procedimentos :: Quadro de procedimento $fp - first word procedure frame Pode ser usado para indicar a primeira palavra do quadro de pilha. Atua como registrador base estável dentro de um procedimento para referência de memória local. Seu uso não é obrigatório, mas é necessário quando $sp é alterado durante a execução do procedimento. Organização de Computadores 3 Organização de Computadores 4

Quadro de Procedimento $sp e $fp endereços baixos endereços altos Organização de Computadores 5 Quadro de procedimento :: Ações do chamador Passagem de argumentos os 4 primeiros são colocados nos registradores $a0- $a3. o restante é colocado na pilha. outros argumentos armazenados no quadro do procedimento. $sp aponta para o último argumento. Registradores caller-saved $a0-$a3 e $t0-$t9 salvar se e somente se o chamador precisar do conteúdo intacto depois que a chamada retornar. Organização de Computadores 6 Quadro de procedimento :: Ações do chamado Alocar memória na pilha: $sp $sp tamanho do quadro Salvar registradores callee-saved no quadro antes de alterá-los: $s0-$s7, $fp e $ra o chamador espera encontrá-los intactos depois da chamada. salvar $fp a cada procedimento que aloca um novo quadro na pilha. só é necessário salvar $ra se o chamado fizer alguma chamada. Ao final: retornar o valor em $v0. restaurar registradores callee-saved salvos no início da chamada. remover o quadro adicionando o tamanho do quadro a $sp. executar jr $ra. Organização de Computadores 7 :: Suporte a procedimentos :: Formato Jump-and-link (jal) jal label # desvia para o endereço indicado # por label. $ra PC + 4 Instrução (decimal): op (3) h xxx jal target endereço da instrução 000011 xxx (26 bits) Organização de Computadores 8

:: Suporte a procedimentos :: Formato :: Suporte a procedimentos :: Resumo Jump register (jr) Instrução (decimal): jr $t3 op 0 jr rs 11 $t3 # PC endereço[$t3] rt rd shamt 0 0 0 -- -- -- funct (8) h jr Categoria Suporte a procedimentos Nome jal jr Exemplo jal rotulo jr $31 Operação $31 endereço[retorno] PC endereço[rotulo] PC $31 000000 01011 00000 00000 00000 001000 Organização de Computadores 9 Organização de Computadores 10 Transferência de Dados Lógicas Controle Suporte a procedimentos :: Transferência de dados MIPS oferece instruções para mover bytes, halfwords e doublewords: Load byte: Store byte: Load halfword: Store halfword: lb sb lh sh Load doubleword: ld Store doubleword: sd Organização de Computadores 11 Organização de Computadores 12

:: Transferência de dados load byte (lb) Lê um byte da memória, colocando-o nos 8 bits mais à direita de um registrador. Demais bits do registrador: conservam sinal do byte carregado. Processador endereços Memória conteúdo :: Transferência de dados store byte (sb) Separa o byte mais à direita de um registrador e o escreve na memória. Demais bits da memória: permanecem inalterados. Processador endereços Memória conteúdo $reg2 12 34 56 AB $reg2 12 34 56 EF 00 FF 98 CD FF FF 70 $reg1 EF AB lb $reg1, 0($reg2) 98 CD $reg1 70 EF sb $reg1, 0($reg2) Organização de Computadores 13 Organização de Computadores 14 :: Transferência de dados store byte (sb) separa o byte mais à direita de um registrador e o escreve na memória. Demais bits da memória: permanecem inalterados. :: Transferência de dados load halfword (lh) e store halfword (sh) Mesma lógica que lb e sb, mas trabalham com halfwords (2 bytes), em vez de bytes isolados. Processador Memória endereços conteúdo $reg2 12 EF 34 56 00 Processador Memória endereços conteúdo $reg2 70 12 EF 34 56 00 98 CD $reg1 70 EF sb $reg1, 2($reg2) 98 CD $reg1 70 EF sh $reg1, 2($reg2) Organização de Computadores 15 Organização de Computadores 16

:: Transferência de dados load byte unsigned (lb) / load halfword unsigned (lhu) Lêem um byte/halfword da memória, colocando-o nos 8 bits mais à direita de um registrador. Demais bits do registrador: preenche-se com zeros. Pseudo-Instruções Processador endereços Memória conteúdo $reg2 12 34 56 AB 00 98 CD 00 00 70 EF AB $reg1 lbu $reg1, 0($reg2) Organização de Computadores 17 Organização de Computadores 18 Hierarquia de tradução Programa C Compilador Programa em linguagem de montagem Montador Objeto: módulo em Linguagem de montagem Ligador Executável: programa em linguagem de máquina Objeto: biblioteca de rotinas (linguagem de máquina) Carregador São instruções fornecidas por um montador mas não implementadas pelo hardware MIPS. O montador as aceita como instruções comuns, mas as traduzem para instruções equivalentes em linguagem de máquina. Facilitam o trabalho do programador por oferecer um conjunto mais rico de instruções que aquele implementado em hardware, sem complicar este. Memória Organização de Computadores 19 Organização de Computadores 20

O montador utiliza o registrador $at para traduzir as pseudo-instruções em linguagem de máquina. Ao se considerar o desempenho (número de instruções por programa N instr ), devese contar as instruções reais do MIPS. MAL (MIPS Assembly Language): conjunto de instruções que o programador pode utilizar para escrever um código assembly MIPS, o que inclui pseudo-instruções. TAL (True Assembly Language): conjunto de instruções que podem realmente ser traduzidas em instruções de linguagem de máquina (strings de 32 bits binários). Organização de Computadores 21 Organização de Computadores 22 Instruções de transferência de dados: carrega endereço (load address) la Rdest, Label Exemplos: Instruções de transferência de dados: carrega imediato (load immediate) li Rdest, Const Exemplos: la $t2, label lui $at, upper 16 bits ori $t2, $at, lower 16 bits li $t2, const lui $at, upper 16 bits ori $t2, $at, lower 16 bits Organização de Computadores 23 Organização de Computadores 24

Instruções de transferência de dados: mover (move) move Rdest, Rsrc Exemplos: Instruções de rotação: rol Rdest, Rsrc1, Shamt ror Rdest, Rsrc1, Shamt Exemplos: move $t2, $t1 addu $t2, $zero, $t1 ror $t2, $t2, 31 sll $at, $t2, 1 srl $t2, $t2, 31 or $t2, $t2, $at Organização de Computadores 25 Organização de Computadores 26 Instruções de desvio: desvia para endereço relativo de 16-bits (branch) b label Exemplos: b target bgez $0, target * bgez branch if greater or equal zero * Instruções de desvio: desviar se Rsrc1 > Rsrc2 bgt Rsrc1, Rsrc2 desviar se Rsrc1 Rsrc2 bge Rsrc1, Rsrc2 desviar se Rsrc1 < Rsrc2 blt Rsrc1, Rsrc2 desviar se Rsrc1 Rsrc2 ble Rsrc1, Rsrc2 Organização de Computadores 27 Organização de Computadores 28

Pseudo-código: Branch if Greater than bgt Rs, Rt, Label Instrução MIPS: slt $at, Rt, Rs bne $at, $0, Label Chamadas de Sistema Mais exemplos: Apêndice A do livro do Patterson. Organização de Computadores 29 Organização de Computadores 30 Chamadas de sistema Chamadas de sistema A instrução syscall suspende a execução do programa usuário e transfere o controle para o sistema operacional. O sistema operacional acessa então o conteúdo do registrador$v0 para determinar qual tarefa o programa usuário está solicitando para ser realizada. Quando o sistema operacional termina de cumprir sua tarefa, o controle retorna ao programa usuário, onde a próxima instrução é executada. Organização de Computadores 31 Organização de Computadores 32

Chamadas de sistema :: Exemplo de leitura de inteiros Chamadas de sistema :: Exemplo de escrita de inteiros ## Get first number from user, put into $t0 li $v0,5 # load syscall read_int into $v0 syscall # make the syscall move $t0,$v0 # move the number read into $t0 ## Print out $t2 move $a0,$t2 # move the number to print into $a0 li $v0,1 # load syscall print_int into $v0 syscall # make the syscall. Organização de Computadores 33 Organização de Computadores 34 Chamadas de sistema :: Exemplo de saída do programa li $v0, 10 # syscall code 10 is for exit. syscall # make the syscall. Organização de Computadores 35 Organização de Computadores 36

Permitem estabelecer algumas estruturas de dados iniciais que serão acessadas pelo computador durante a execução. As diretivas assembler começam com um ponto:.data.space.text etc. Não são executadas pelo computador durante o tempo de execução. Apenas direcionam o montador a reservar algumas estruturas de dados antes da execução. Organização de Computadores 37 Organização de Computadores 38 :: Exemplo (1) main:.data # put things into the data segment hello_msg:.asciiz "Hello World\n".text # put things into the text segment la $a0,hello_msg # load the addr of hello_msg into $a0 li $v0,4 # 4 is the print_string syscall syscall # do the syscall li $v0,10 syscall # 10 is the exit syscall # do the syscall :: Exemplo (2) Código C: int MATRIZ[1024]; Código assembly MIPS:.data MATRIZ:.space 4096 # dados devem ser alocados # no segmento de dados Organização de Computadores 39 Organização de Computadores 40

:: Exemplo (3) Código C: int val[16] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,4096, 8192, 16384, 32768} Código assembly MIPS:.data val:.word 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 :: Carregar endereço base Pseudo-instrução load address (la)..data val:.word 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 la $t0, val Carrega no registrador $t0 o endereço de memória onde a matriz val começa. Organização de Computadores 41 Organização de Computadores 42 :: Elementos do array Instrução load word, halfword, byte: lw, lh, lb Depende do tipo de diretiva declarada. Offset de endereço de memória é sempre dado em bytes. Organização de Computadores 43 Organização de Computadores 44

O que aprendemos hoje? Suporte a Procedimentos realização dos procedimentos com MIPS uso de registradores pilha Transferência de dados avançada Pseudo-Instruções Chamadas de Sistema Organização de Computadores 45 Exercício Converta o código em linguagem de alto nível para o código assembly correspondente! Suponha que os valores das variáveis x e y do main() estejam armazenados em $s1 e $s2. main(){ int x, y; x = 2; y = funcao(x); } int funcao(a){ int x; x = 2 * a; return(x); } main:.data x:.word y:.word la $s1,x la $s2,y.text addi $s1,$zero,2 add $a0, $zero,$s1 jal funcao add $s2,$zero,$v0 funcao: sll $v0,$a0,1 Organização de Computadores jr $ra 46