A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

A linguagem de Máquina – Instruções Básicas

Apresentações semelhantes


Apresentação em tema: "A linguagem de Máquina – Instruções Básicas"— Transcrição da apresentação:

1 A linguagem de Máquina – Instruções Básicas
Prof. André Luis M. Silva orgearq wordpress.com

2 Introdução Com o assunto de hoje, começaremos a entender as seguintes questões Como controlar o hardware? Qual a diferença entre um hardware específico e um de propósito geral? Como deixar o hardware flexível?

3 Introdução Com o assunto de hoje, começaremos a entender as seguintes questões Como controlar o hardware? Através de instruções. Qual a diferença entre um hardware específico e um de propósito geral? Flexibilidade, forma de programação Como deixar o hardware flexível? Dando o suporte a um conjunto de instruções.

4 O processador MIPS As palavras da linguagem de um computador são chamadas de instruções e seu vocabulário é denominado de conjunto de instruções. Embora o conjunto de instruções seja uma característica associada a arquitetura, em geral, o conjunto de instruções de diferentes arquiteturas são bastante similares. Isso acontece devido: Aos projetos possuírem princípios básicos semelhantes Algumas operações básicas devem ser oferecidas por todos os computadores.

5 O processador MIPS Hoje e nas próximas aulas veremos o conjunto de instruções do processador MIPS. Um pouco sobre o MIPS: Criado na década de 80 por John L. Hennessy. Microprocessador bastante utilizado. Em 2002, foram fabricados 100 milhões de unidades. Encontrados em produtos de várias empresas. ATI, Broadcom, Cisco, NEC, Nintendo, Silicon Graphics, Sony, Texas Instrument, Toshiba, etc.

6 O Processador Mips Elementos Básicos Entrada Memória Cache
Unidade de Controle Registradores Saída

7 O processador MIPS Algumas Características
Instruções simples, sempre realizam uma única operação. Tamanho fixo de 32 bits. Possui 32 registradores. Cada um deles de 32 bits. Tamanho da palavra MIPS Em geral, instruções MIPS trabalham com 3 operandos. Esta característica torna o hardware mais simples.

8 O Processador MIPS Princípios fundamentais de projeto MIPS:
“Simplicidade favorece a regularidade” “Menor significa mais rápido” “Agilize os casos mais comuns” “Um bom projeto exige bons compromissos”.

9 Instruções para soma e subtração
add e sub. Exemplos: add a, b, c # A soma de b + c é colocada em a. sub a, b, c # A subtração de b - c é colocada em a. Como são compiladas as seguintes instruções java? a = b + c; d = a - e;

10 Instruções para soma e subtração
add a, b, c sub d, a, e E essa atribuição? f = (g + h) – (i + j);

11 Instruções para soma e subtração
add a, b, c sub d, a, e E essa atribuição? f = (g + h) – (i + j); Mais de uma instrução Quem recebe o valor de (g+h) e (i+j)? Observem que alguns valores não serão armazenados em nenhuma variável. É o caso de (g+h) e (i+j). Operações intermediárias devem ser armazenadas em variáveis temporárias.

12 Instruções para soma e subtração
f = (g + h) – (i + j); Assembly final: add t0, g, h add t1, i, j sub f, t0, t1

13 Registradores no MIPS Operandos do hardware de um computador
Operandos (variáveis) de uma instrução aritmética são os registradores. Temos quantos registradores? Qual o motivo para termos uma quantidade tão pequena de registradores? 32.

14 Registradores no MIPS Além de fatores ligados ao consumo de energia, complexidade do hardware e preço final do produto, também temos um outro fator: “Menor significa mais rápido” Uma quantidade muito grande de registradores pode piorar o desempenho, simplesmente porque os sinais eletrônicos levam mais tempo quando precisam atravessar uma distância maior. Cuidado. Em alguns casos ter mais registradores promove um melhor desempenho. Devemos sempre pesar o limite deste número de registradores (preço/desempenho).

15 Registradores no MIPS Padrão de nomes de registradores:
Utilizamos “$” seguido por dois caracteres para representar um registrador. $s0, $s1, $s2,... representam os registradores salvos (armazenam variáveis) $t0, $t1, ... Representam os registradores temporários (operações intermediárias)

16 Registradores no MIPS f = (g + h) – (i + j); add t0, g, h add t1, i, j
Assembly add t0, g, h add t1, i, j sub f, t0, t1 add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1

17 Instrução para soma com constantes
addi (Adição Imediata). Realiza soma com um valor constante. Sintaxe: addi $r1, $r2, const Efeito: $r1 := $r2 + const; Segue o princípio de projeto: “Agilize os casos mais comuns” Realmente ele é um caso comum. Onde? Lembrem-se que grande parte dos laços fazem uso desta instrução.

18 Registradores no MIPS Pergunta:
O processador MIPS possui apenas 32 registradores. Como fazemos para trabalhar com variáveis complexas, cuja quantidade de registradores do MIPS é insuficiente para armazená-las?

19 Instruções para transferência de dados
Utilizando a memória principal. Para realizarmos a transferência de um word (palavra) da memória para um registrador, utilizamos a instrução lw (load word). Sintaxe: lw $r1, const($r2), $r1 é o registrador que armazena o conteúdo da memória. const representa um valor constante que é somado ao endereço presente no registrador $r2.

20 Instruções para transferência de dados
A memória principal Cada endereço da memória externa representam células de 8 bits (1 byte). A instrução lw carrega uma palavra da memória principal. Logo, se dermos um lw no endereço 0, receberemos os dados do endereço 0, 1, 2 e 3.

21 Instruções para transferência de dados
A instrução que desempenha função inversa ao load word (lw) é a instrução store word (sw). Basicamente ela transfere o conteúdo de um registrador para um endereço específico da memória principal. Sintaxe: Similar ao do lw. sw $r1, const($r2)

22 Instruções para transferência de dados
Qual código assembly para o seguinte trecho de código. g = h + A[3]; Considere: A um array de inteiros. Endereço de A em $s3 Endereço de h em $s2 lw $t0,12($s3); add $s1,$2,$t0; Porque 12? Porque cada posição do array ocupa 1 palavra (4 bytes ou 32 bits). Lembrem-se que cada endereço sinaliza para uma célula de 1 byte apenas. Logo, para acessarmos o inteiro na posição 3, temos de pular os 3 inteiros que aparecem antes no array, assim temos: 4 * 3 = 16

23 Instruções para transferência de dados
Exemplo: Considere A um array de inteiros Endereço de A em $s3 Valor de h em $s2 A[12] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48, $s3;

24 Atividade 1 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1 e C em $s2. Converta para assembly. for (int i:= 0; i < 3; i++) C[i] := A[i] + B[i];

25 Atividade 2 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] - i;

26 Endianness Grande parte dos processadores fazem restrição com relação ao endereço em que começam suas palavras. No Mips, por exemplo, suas palavras precisam começar em endereços que sejam múltiplos de 4. Esse requisito é denominado restrição de alinhamento. Com relação ao byte de endereçamento, os processadores podem ser big endian ou little endian.

27 Endianness Processadores Big-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à esquerda.

28 Endianness Processadores Little-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à direita.

29 Instruções para operações lógicas

30 Instruções para operações lógicas
Sintaxe de uso dos operadores de deslocamento (sll, slr). sll $t2, $s0, 4; # reg $t2 = $s0 << 4 bits. Para $s0 = 9, teríamos $t2 = 144;

31 Instruções para operações lógicas
and, nor e or, possuem sintaxe similar ao add. and $t0, $t1, $t2 Funcionamento: $t0 = $t1 & $t2; Mips não possui uma instrução not. Tem como eu obter esta instrução a partir de uma das instruções acima?

32 Instruções para operações lógicas
Utilizando nor com 0. Exemplo: 1001

33 Atividade 3 Seja o array A formado por inteiros de 32 bits, com os seguintes valores: A = { 2048, 1, 57888, 23, 12} Mostre como o mesmo estaria representado em memória caso seja utilizado Little Endian e Big Endian.

34 Atividade 4 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] * 4;

35 Atividade 5 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] / 8;

36 Estudar. Organização e Projeto de Computadores: Interface Hw/Sw
Seções 2.1 até 2.5


Carregar ppt "A linguagem de Máquina – Instruções Básicas"

Apresentações semelhantes


Anúncios Google