Computadores de Programação (MAB353)



Documentos relacionados
Computadores de Programação (MAB353)

MODOS DE ENDEREÇAMENTO

Computadores de Programação (MAB353)

Arquitetura de Computadores. Linguagem de Máquina

MIPS. Prof. Carlos Bazilio

Organização e Arquitetura de Computadores I

Arquitetura de Computadores

Componentes do Computador e. aula 3. Profa. Débora Matos

SSC0611 Arquitetura de Computadores

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

Organização e Arquitetura de Computadores I

SSC0114 Arquitetura de Computadores

Aula 14: Instruções e Seus Tipos

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

Anotações da 2a Edição

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

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

RISC simples. Aula de Março de

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Organização de Computadores 1

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

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

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

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

Conjunto de Instruções

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Introdução à Arquitetura de Computadores

ARQUITETURA DE COMPUTADORES

2 Formalidades referentes ao trabalho

Nível da Microarquitetura

Arquitetura de Computadores

BARRAMENTO DO SISTEMA

Estrutura de um Computador

ARQUITETURA DE COMPUTADORES

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

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

Conjunto de Instruções e Arquitectura p.1

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Arquitetura de Computadores I

Figura 1 - O computador

Representando Instruções no Computador

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

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

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

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Organização e Arquitetura de Computadores I

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Linguagem de Montagem 2. Operações e Operandos

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Edeyson Andrade Gomes

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

Unidade 5: Sistemas de Representação

O Processador: Caminho de Dados e Controle

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Organização e Arquitetura de computadores

Arquitetura de Computadores. Tipos de Instruções

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

ULA Sinais de Controle enviados pela UC

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

Geração de código intermediário. Novembro 2006

Arquitectura de Computadores

Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

Sistemas Computacionais II Professor Frederico Sauer

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Introdução à Lógica de Programação

RISC - Reduced Instruction Set Computer

Relembrando desempenho...

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Capítulo 2. Numéricos e Códigos Pearson Prentice Hall. Todos os direitos reservados.

Arquitetura e Organização de Computadores

4-1. Parte2: A Arquitetura do Conjunto de Instruções

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Organização e Arquitetura de Computadores I. de Computadores

Programando o computador IAS

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Índice. Tudo! (datapath de um ciclo)

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 1

Computadores XXI: Busca e execução Final

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

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

Introdução às Linguagens de Programação

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

28/9/2010. Unidade de Controle Funcionamento e Implementação

Transcrição:

Computadores de Programação (MAB353) Aula 8: 04 de maio de 2010

1 Formatos de instruções MIPS 2 Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS 3 4

Formatos de instruções MIPS As instruções são armazenadas no computador como sequências de números binários (por isso programas são disponibilizados como arquivos binários) os nomes dos registradores são convertidos nos números correspondentes cada instrução é mapeada para um código numérico específico os endereços de memória e constantes já são valores numéricos A versão do programa em mnemônicos é chamada programa em linguagem de montagem e a versão numérica do programa é chamada programa em linguagem de máquina

Mapeamento dos registradores Formatos de instruções MIPS Name Register number Usage Preserved call? $zero 0 The constant value 0 n.a. $v0 $v1 2 3 Values for results and express ion evaluation no $a0 $a3 4 7 Arguments no $t0 $t7 8 15 Temporaries no $s0 $s7 16 23 Saved yes $t8 $t9 24 25 More temporaries no $gp 28 Global pointer yes $sp 29 Stack pointer yes $fp 30 Frame pointer yes $ra 31 Return address yes FIGURE 2.14 MIPS register conventions. Register 1, called $at, is reserved for the assemb Section 2.12), and registers 26 27, called $k0 $k1, are reserved for the operating system. This infor is also found in Column Prof. 2 of Silvana the MIPS Rossetto Reference Traduzindo Data Card instruções at the MIPS front em instruções of this book. de máquina Copyright

Formato das instruções Formatos de instruções MIPS O layout de uma instrução é chamado formato da instrução e é composto de vários campos cujos valores são mapeados para números binários Todas as instruções MIPS possuem 32 bits Como as instruções requerem parâmetros diferentes, o MIPS define diferentes formatos de instruções: R-format (R): formato usado pelas instruções aritméticas I-format (I): formato usado pelas instruções de transferência de dados ou com valores imediatos J-format (J): formato usado pelas instruções de desvio

Formato das instruções Formatos de instruções MIPS Name Fields Field size 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits A R-format op rs rt rd shamt funct A I-format op rs rt address/ immediate T J-format op target address J FIGURE 2.20 MIPS instr uction formats. Copyright 2009 Elsevier, Inc. All ri

Formato R (registrador) Formatos de instruções MIPS Campos do formato R op: código da operação básica rs: número do registrador do primeiro operando rt: número do registrador do segundo operando rd: número do registrador de destino (resultado da operação) shamt: quantidade de shift (deslocamento) funct: código da função, seleciona uma variante da operação no campo op

Formatos de instruções MIPS Exemplo de tradução da instrução add no formato R

Mapeamento das instruções de shift Formatos de instruções MIPS As instruções de shift também são mapeadas no formato R Elas fazem uso do campo shamt (shift amount) O campo rd contém o registrador de destino, o campo rt contém o registrador operando, e o campo shamt contém o valor do deslocamento O campo rs não é usado e então recebe sempre valor 0

Formatos de instruções MIPS Exemplo de tradução da instrução sll no formato R

Formato I (imediato) Formatos de instruções MIPS Campos do formato I op: código da operação básica rs: número do registrador do primeiro operando rt: número do registrador do segundo operando constante/endereço:

Formatos de instruções MIPS Exemplo de tradução da instrução lw no formato I Figura: Obs.: O campo rs recebe 19 ($s3 e o campo rt recebe 8 ($t0).

Formato J (jump) Formatos de instruções MIPS Campos do formato J op: código da operação endereço: endereço de desvio

Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Endereçamento de operandos imediatos de 32 bits Operandos imediatos de 32 bits A instrução lui (load upper immediate) foi acrescentada pelo MIPS para permitir constantes que requerem mais de 16 bits Ela permite setar os 16 bits mais altos de uma constante em um registrador, a instrução seguinte deve especificar os 16 bits mais baixos da constante A instrução lui transfere os 16 bits imediato para os 16 bits mais a esquerda do registrador, preenchendo os 16 bits mais a direita com zeros Ex., lui $t0, 255

Instrução lui Sumário Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS The machine language version of lui $t0, 255 # $t0 is register 8: 001111 00000 01000 0000 0000 1111 1111 Contents of register $t0 after executing lui $t0, 255: 0000 0000 1111 1111 0000 0000 0000 0000 FIGURE 2.17 The effe ct of the lui instruction. The instruction lui transfers the 16-bit immediate cons leftmost 16 bits of the register, filling the lower 16 bits with 0s. Copyright 2009 Elsevier, Inc. All rights reserved.

Exemplo de uso da instrução lui Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS

Uso da instrução lui Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS O compilador ou o montador deve quebrar constantes grandes em pedaços e remontá-los em um registrador No MIPS essa tarefa é do montador Ele usa um registrador temporário: $at (reservado para uso do montador)

Endereçamento em desvios Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Nos desvios incondicionais, o campo de endereço tem 26 bits (formato J) Nos desvios condicionais, o campo de endereço tem 16 bits (formato I) Para ampliar o espaço de endereçamento das instruções de desvio condicional, a idéia é usar um registrador base, cujo valor sempre deve ser adicionado ao endereço de desvio (novo endereço = Reg + endereço de desvio) Mas quem deve ser Reg?

Endereçamento em desvios Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Observar como os desvios condicionais são normalmente usados: Os desvios condicionais aparecem em loops e em sentenças if, então eles tendem a desviar a execução para uma instrução próxima Dado que o registrador PC tem o endereço da instrução corrente, podemos desviar + 2 15 palavras a partir da instrução corrente, usando o PC como registrador base do endereço de desvio

Endereçamento relativo ao PC Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Definição Regime de endereçamento no qual o endereço é a soma do valor do PC e a constante na instrução Como as instruções MIPS possuem 32 bits, o endereçamento relativo ao PC refere-se ao número de palavras até a próxima instrução (ao invés do número de bytes) Permite tratar o caso do desvio para as subrotinas (usando a instrução jal) (as subrotinas podem não estar próximas ao PC) (o espaço de endereçamento é então esticado de 4 vezes) O endereço relativo é sempre em relação ao endereço seguinte a instrução corrente: PC+4

Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Exemplo de endereçamento relativo ao PC Figura: A instrução Prof. j usa Silvana o endereço Rossetto cheio, Traduzindo 20000 instruções * 4, MIPS para em instruções ir para de Loop. máquina

Aumentando o espaço de endereçamento Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Se o endereço de desvio for distante, ultrapassando o endereçamento possível com 16 bits, o montador pode inserir um jump incondicional para atingir o alvo e inverter a condição

Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Sumário dos modos de endereçamento do MIPS As diferentes formas de endereçamento do MIPS são genericamente chamadas modos de endereçamento, e incluem: Endereçamento imediato: o operando é uma constante dentro da própria instrução Endereçamento por registrador: o operando é um registrador Endereçamento de base: o operando está em uma localização de memória cujo endereço é a soma de um registrador e uma constante presentes na instrução

Modos de endereçamento do MIPS Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS

Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Sumário dos modos de endereçamento do MIPS Endereçamento relativo ao PC: o endereço de desvio é a soma do valor atual do PC e a constante na instrução (adiciona um endereço de memória de 16 bits deslocado à esquerda de 2 com o valor de PC) Endereçamento pseudo-direto: o endereço de desvio são os 26 bits da instrução, concatenados com os bits mais altos do PC (concatena um endereço de 26 bits deslocado à esquerda de 2 com os 4 bits mais altos do PC)

Modos de endereçamento do MIPS Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS

Decodificando a linguagem de máquina Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS Algumas vezes pode ser necessário engenharia reversa da linguagem de máquina (ex., para tratar um core dumped )

Decodificando a linguagem de máquina Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS

A representação ASCII (Americam Standard Code for Information Interchange) é normalmente usada para representar caracteres O conjunto de instruções MIPS permite extrair um byte de uma palavra, então as operações para carregar e armazenar uma palavra (lw, sw) são suficientes para transferir bytes e palavras

Representação de caracteres ASCII

Intruções sobre bytes load byte (lb) e store byte (sb)..entretanto, como é comum operações sobre bytes (caracteres de um texto), o MIPS provê instruções para movimentação de bytes: lb (load byte): carrega um byte da memória, coloca o byte nos 8 bits mais a direita do registrador sb (store byte): armazena um byte na memória, pega os 8 bits mais a direita do registrador Exemplos lb $t0, 0($sp) (lê do ponteiro da pilha) sb $t0, 0($gp) (escreve no ponteiro da pilha)

Carga de bytes com ou sem sinal O tratamento de dados com ou sem sinal se aplica para operações aritméticas e também para a carga de dados na memória A função da carga sinalizada é copiar o sinal para preencher o restante do registrador (de modo a guardar a representação correta do valor no registrador) Cargas (transferências) não sinalizadas simplesmente acrescentam ZEROs

Carga de bytes com ou sem sinal Quando uma palavra de 32 bits é carregada para um registrador (de 32 bits), a carga sinalizada ou não-sinalizada tem o mesmo efeito Para a carga de bytes, o MIPS oferece duas alternativas de instruções: lb, lbu

Carga de bytes com ou sem sinal Carga com sinal (lb) lb: trata o byte como um número com sinal, e então estende o sinal para preencher o restante do registrador Carga sem sinal (lbu) lbu: usado com números não-sinalizados (usado normalmente para trabalhar com caracteres)

Representação de Strings Caracteres são normalmente concatenados em strings, há 3 maneiras de representar strings: 1 A primeira posição da string é reservada para indicar o tamanho da string 2 Uma variável que acompanha a string guarda o tamanho da string (como uma estrutura de dados) 3 A última posição da string é ocupada por um caractere especial, usado para marcar o final da string (C usa essa opção) ex., a string Cae é representada em C por 4 bytes (67,97,108,0)

Caracteres e strings em Java Java usa 16 bits para representar caracteres (codificação Unicode) e uma palavra adicional para guardar o tamanho da string (similar a vetores em Java) O MIPS oferece instruções especiais para carga e armazenamento de quantidades de 16 bits (halfwords) lh: carrega 16 bits de memória para os 16 bits mais a direita de um registrador, fazendo extensão do sinal lhu: trabalha com valores sem sinal sh: pega os 16 bits mais a direita do registrador e escreve na memória

Alinhamento da pilha O MIPS tenta manter a pilha alinhada com os endereços de palavras, para permitir que o programa use lw, sw para acessar a pilha Essa convenção significa que uma variável char de C alocada na pilha ocupa 4 bytes, mesmo que ela precise de apenas 1 Entretanto, uma variável string C irá empacotar 4 bytes (char) por palavra

1 Organização e projeto de computadores: a interface hardware/software, D. A. Patterson e J. L. Hennessy, Elsevier, 2005.