• Nenhum resultado encontrado

Computadores de Programação (MAB353)

N/A
N/A
Protected

Academic year: 2021

Share "Computadores de Programação (MAB353)"

Copied!
38
0
0

Texto

(1)

Computadores de Programa¸c˜

ao (MAB353)

Aula 8: Traduzindo instru¸c˜oes MIPS em instru¸c˜oes de m´aquina

Prof. Silvana Rossetto

(2)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

1 Representa¸c˜ao de instru¸c˜oes no computador

Formatos de instru¸c˜oes MIPS

2 Endere¸camento MIPS

Endere¸camento de operandos imediatos de 32 bits Endere¸camento em desvios

Modos de endere¸camento do MIPS

3 Comunicando-se com as pessoas

(3)

Representa¸c˜

ao de instru¸c˜

oes no computador

As instru¸c˜oes s˜ao armazenadas no computador como sequˆencias de n´umeros bin´arios

(por isso programas s˜ao disponibilizados como arquivos bin´arios)

os nomes dos registradores s˜ao convertidos nos n´umeros correspondentes

cada instru¸c˜ao ´e mapeada para um c´odigo num´erico espec´ıfico os endere¸cos de mem´oria e constantes j´a s˜ao valores num´ericos

A vers˜ao do programa em mnemˆonicos ´e chamada programa em linguagem de montagem e a vers˜ao num´erica do programa ´e chamada programa em linguagem de m´aquina

(4)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Formatos de instru¸c˜oes MIPS

Mapeamento dos registradores

Name Register number Usage

Preserved on 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 assembler (see Section 2.12), and registers 26−27, called $k0−$k1, are reserved for the operating system. This information is also found in Column 2 of the MIPS Reference Data Card at the front of this book. Copyright © 2009

(5)

Formato das instru¸c˜

oes

O “layout” de uma instru¸c˜ao ´e chamado formato da instru¸c˜ao e ´e composto de v´arios campos cujos valores s˜ao mapeados para n´umeros bin´arios

Todas as instru¸c˜oes MIPS possuem 32 bits

Como as instru¸c˜oes requerem parˆametros diferentes, o MIPS define diferentes formatos de instru¸c˜oes:

R-format (R): formato usado pelas instru¸c˜oes aritm´eticas I-format (I): formato usado pelas instru¸c˜oes de transferˆencia de dados ou com valores imediatos

(6)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Formatos de instru¸c˜oes MIPS

Formato das instru¸c˜

oes

Name Fields Comments

Field size 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits All MIPS instructions are 32 bits long

R-format op rs rt rd shamt funct Arithmetic instruction format

I-format op rs rt address/ immediate Transfer, branch, imm. format

J-format op target address Jump instruction format

(7)

Formato R (registrador)

Campos do formato R

op: c´odigo da opera¸c˜ao b´asica

rs: n´umero do registrador do primeiro operando rt: n´umero do registrador do segundo operando

rd: n´umero do registrador de destino (resultado da opera¸c˜ao) shamt: quantidade de shift (deslocamento)

(8)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Formatos de instru¸c˜oes MIPS

(9)

Mapeamento das instru¸c˜

oes de shift

As instru¸c˜oes de shift tamb´em s˜ao mapeadas no formato R Elas fazem uso do campo shamt (shift amount)

O campo rd cont´em o registrador de destino, o campo rt cont´em o registrador operando, e o campo shamt cont´em o valor do deslocamento

(10)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Formatos de instru¸c˜oes MIPS

(11)

Formato I (imediato)

Campos do formato I

op: c´odigo da opera¸c˜ao b´asica

rs: n´umero do registrador do primeiro operando rt: n´umero do registrador do segundo operando constante/endere¸co:

(12)

Sum´ario

Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Formatos de instru¸c˜oes MIPS

Exemplo de tradu¸c˜

ao da instru¸c˜

ao lw no formato I

Figura: Obs.: O campo rs recebe 19 ($s3

(13)

Formato J (jump)

Campos do formato J

op: c´odigo da opera¸c˜ao endere¸co: endere¸co de desvio

(14)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits

Endere¸camento em desvios Modos de endere¸camento do MIPS

Endere¸camento de operandos imediatos de 32 bits

Operandos imediatos de 32 bits

A instru¸c˜ao 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¸c˜ao seguinte deve especificar os 16 bits mais baixos da constante

A instru¸c˜ao lui transfere os 16 bits imediato para os 16 bits mais a esquerda do registrador, preenchendo os 16 bits mais a direita com zeros

(15)

Instru¸c˜

ao lui

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 constant fi eld value into the leftmost 16 bits of the register, fi lling the lower 16 bits with 0s. Copyright © 2009 Elsevier, Inc. All rights reserved.

(16)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits

Endere¸camento em desvios Modos de endere¸camento do MIPS

(17)

Uso da instru¸c˜

ao lui

O compilador ou o montador deve “quebrar” constantes grandes em peda¸cos e remont´a-los em um registrador No MIPS essa tarefa ´e do montador

Ele usa um registrador tempor´ario: $at (reservado para uso do montador)

(18)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits

Endere¸camento em desvios

Modos de endere¸camento do MIPS

Endere¸camento em desvios

Nos desvios incondicionais, o campo de endere¸co tem 26 bits (formato J)

Nos desvios condicionais, o campo de endere¸co tem 16 bits (formato I)

Para ampliar o espa¸co de endere¸camento das instru¸c˜oes de desvio condicional, a id´eia ´e usar um registrador base, cujo valor sempre deve ser adicionado ao endere¸co de desvio (novo endere¸co = Reg + endere¸co de desvio)

(19)

Endere¸camento em desvios

Observar como os desvios condicionais s˜ao normalmente usados:

Os desvios condicionais aparecem em loops e em senten¸cas if, ent˜ao eles tendem a desviar a execu¸c˜ao para uma instru¸c˜ao pr´oxima

Dado que o registrador PC tem o endere¸co da instru¸c˜ao corrente, podemos desviar + − 215 palavras a partir da instru¸c˜ao corrente, usando o PC como registrador base do endere¸co de desvio

(20)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits

Endere¸camento em desvios

Modos de endere¸camento do MIPS

Endere¸camento relativo ao PC

Defini¸c˜ao

Regime de endere¸camento no qual o endere¸co ´e a soma do valor do PC e a constante na instru¸c˜ao

Como as instru¸c˜oes MIPS possuem 32 bits, o endere¸camento relativo ao PC refere-se ao n´umero de palavras at´e a pr´oxima instru¸c˜ao (ao inv´es do n´umero de bytes)

Permite tratar o caso do desvio para as subrotinas (usando a instru¸c˜ao jal) (as subrotinas podem n˜ao estar pr´oximas ao PC) (o espa¸co de endere¸camento ´e ent˜ao “esticado” de 4 vezes)

O endere¸co relativo ´e sempre em rela¸c˜ao ao endere¸co seguinte a instru¸c˜ao corrente: PC+4

(21)
(22)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits

Endere¸camento em desvios

Modos de endere¸camento do MIPS

Aumentando o espa¸co de endere¸camento

Se o endere¸co de desvio for distante, ultrapassando o

endere¸camento poss´ıvel com 16 bits, o montador pode inserir um jump incondicional para atingir o alvo e inverter a condi¸c˜ao

(23)

Sum´

ario dos modos de endere¸camento do MIPS

As diferentes formas de endere¸camento do MIPS s˜ao

genericamente chamadas modos de endere¸camento, e incluem: Endere¸camento imediato: o operando ´e uma constante dentro da pr´opria instru¸c˜ao

Endere¸camento por registrador: o operando ´e um registrador

Endere¸camento de base: o operando est´a em uma localiza¸c˜ao de mem´oria cujo endere¸co ´e a soma de um registrador e uma constante presentes na instru¸c˜ao

(24)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits Endere¸camento em desvios

Modos de endere¸camento do MIPS

(25)

Sum´

ario dos modos de endere¸camento do MIPS

Endere¸camento relativo ao PC: o endere¸co de desvio ´e a soma do valor atual do PC e a constante na instru¸c˜ao (adiciona um endere¸co de mem´oria de 16 bits – deslocado `a esquerda de 2 – com o valor de PC)

Endere¸camento pseudo-direto: o endere¸co de desvio s˜ao os 26 bits da instru¸c˜ao, concatenados com os bits mais altos do PC (concatena um endere¸co de 26 bits – deslocado `a

(26)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits Endere¸camento em desvios

Modos de endere¸camento do MIPS

(27)

Decodificando a linguagem de m´

aquina

Algumas vezes pode ser necess´ario engenharia reversa da linguagem de m´aquina (ex., para tratar um “core dumped”)

(28)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador

Endere¸camento MIPS

Comunicando-se com as pessoas Referˆencias bibliogr´aficas

Endere¸camento de operandos imediatos de 32 bits Endere¸camento em desvios

Modos de endere¸camento do MIPS

(29)

Comunicando-se com as pessoas

A representa¸c˜ao ASCII (Americam Standard Code for Information Interchange) ´e normalmente usada para representar caracteres

O conjunto de instru¸c˜oes MIPS permite extrair um byte de uma palavra, ent˜ao as opera¸c˜oes para carregar e armazenar uma palavra (lw, sw) s˜ao suficientes para transferir bytes e palavras

(30)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS

Comunicando-se com as pessoas

Referˆencias bibliogr´aficas

(31)

Intru¸c˜

oes sobre bytes

load byte (lb) e store byte (sb)

..entretanto, como ´e comum opera¸c˜oes sobre bytes (caracteres de um texto), o MIPS provˆe instru¸c˜oes para movimenta¸c˜ao de bytes:

lb (load byte): carrega um byte da mem´oria, coloca o byte nos 8 bits mais a direita do registrador

sb (store byte): armazena um byte na mem´oria, pega os 8 bits mais a direita do registrador

Exemplos

lb $t0, 0($sp) (lˆe do ponteiro da pilha) sb $t0, 0($gp) (escreve no ponteiro da pilha)

(32)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS

Comunicando-se com as pessoas

Referˆencias bibliogr´aficas

Carga de bytes com ou sem sinal

O tratamento de dados com ou sem sinal se aplica para opera¸c˜oes aritm´eticas e tamb´em para a carga de dados na mem´oria

A fun¸c˜ao da carga sinalizada ´e copiar o sinal para preencher o restante do registrador (de modo a guardar a representa¸c˜ao correta do valor no registrador)

Cargas (transferˆencias) n˜ao sinalizadas simplesmente acrescentam ZEROs

(33)

Carga de bytes com ou sem sinal

Quando uma palavra de 32 bits ´e carregada para um

registrador (de 32 bits), a carga sinalizada ou n˜ao-sinalizada tem o mesmo efeito

Para a carga de bytes, o MIPS oferece duas alternativas de instru¸c˜oes: lb, lbu

(34)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS

Comunicando-se com as pessoas

Referˆencias bibliogr´aficas

Carga de bytes com ou sem sinal

Carga com sinal (lb)

lb: trata o byte como um n´umero com sinal, e ent˜ao estende o sinal para preencher o restante do registrador

Carga sem sinal (lbu)

lbu: usado com n´umeros n˜ao-sinalizados (usado normalmente para trabalhar com caracteres)

(35)

Representa¸c˜

ao de Strings

Caracteres s˜ao normalmente concatenados em strings, h´a 3 maneiras de representar strings:

1 A primeira posi¸c˜ao da string ´e reservada para indicar o

tamanho da string

2 Uma vari´avel que acompanha a string guarda o tamanho da

string (como uma estrutura de dados)

3 A ´ultima posi¸ao da string ´e ocupada por um caractere

especial, usado para marcar o final da string (C usa essa op¸c˜ao)

ex., a string “Cae” ´e representada em C por 4 bytes (67,97,108,0)

(36)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS

Comunicando-se com as pessoas

Referˆencias bibliogr´aficas

Caracteres e strings em Java

Java usa 16 bits para representar caracteres (codifica¸c˜ao Unicode) e uma palavra adicional para guardar o tamanho da string (similar a vetores em Java)

O MIPS oferece instru¸c˜oes especiais para carga e armazenamento de quantidades de 16 bits (halfwords) lh: carrega 16 bits de mem´oria para os 16 bits mais a direita de um registrador, fazendo extens˜ao do sinal

lhu: trabalha com valores sem sinal

sh: pega os 16 bits mais a direita do registrador e escreve na mem´oria

(37)

Alinhamento da pilha

O MIPS tenta manter a pilha alinhada com os endere¸cos de palavras, para permitir que o programa use lw, sw para acessar a pilha

Essa conven¸c˜ao significa que uma vari´avel char de C alocada na pilha ocupa 4 bytes, mesmo que ela precise de apenas 1 Entretanto, uma vari´avel string C ir´a empacotar 4 bytes (char) por palavra

(38)

Sum´ario Representa¸c˜ao de instru¸c˜oes no computador Endere¸camento MIPS Comunicando-se com as pessoas

Referˆencias bibliogr´aficas

Referˆ

encias bibliogr´

aficas

1 Organiza¸ao e projeto de computadores: a interface

hardware/software, D. A. Patterson e J. L. Hennessy, Elsevier, 2005.

Referências

Documentos relacionados

Um segmento absoluto de c´ odigo ´ e uma zona de mem´ oria com endere¸ co inicial conhecido onde est˜ ao instru¸ c˜ oes do programa e/ou operandos com valor constante. end ; Fim do

Repare-se finalmente nos c´ odigos das instru¸ c˜ oes de salto utilizadas neste exemplo (linhas 24, 28 e 30) – o ´ ultimo byte de cada instru¸c˜ ao representa a distˆ ancia entre

a) Executar os serviços durante 12 (doze) meses, a contar da publicação do extrato desta Ata no Jornal Oficial do Município, os itens relacionados na presente Ata, na forma

iº — Designar para amar como Fisca] de Contrato, exacendo todas as atribuições ao mmo inerentes :: designadas em legislação pertinentes e nesta Pena:-ia, no âmbito da

Lista de referˆ encias bibliogr´ aficas e cita¸ c˜ oes com a numera¸c˜ ao/sincroniza¸ c˜ ao autom´ atica. Para citar basta introduzir: \cite[texto opcional]{chave} no local em que

O administrador CMSW poderá utilizar o relacionamento global de licenças de software para agilizar a manutenção das informações por software, usuário ou equipamento.. Clique

Imiprotrina Não estabelecido TLV-TWA ND ACGIH 2006 Praletrina Não estabelecido TLV-TWA ND ACGIH 2006 Cifenotrina-S Não estabelecido TLV-TWA ND ACGIH 2006. Butano/Propano

Teorema 23.3 Toda representa¸c˜ ao unit´ aria fortemente cont´ınua Π de um grupo compacto G em um espa¸co de Hilbert separ´ avel H ´e uma soma direta cont´ avel de