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

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

Instruções Lógicas e Aritméticas

Apresentações semelhantes


Apresentação em tema: "Instruções Lógicas e Aritméticas"— Transcrição da apresentação:

1 Instruções Lógicas e Aritméticas
Arquitetura e Organização de Computadores GSI013 – Arq. e Org. de Computadores Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala

2 Na Aula Anterior ...

3 Nesta Aula Instruções aritméticas; Overflow e underflow;
Variantes da operação ADD; Instruções lógicas; Comentários em assembly; MARS e a estrutura de um programa em assembly;

4 Instruções Aritméticas Fundamentais
OP Descrição Exemplo add Adição com overflow add $rd,$rs,$rt sub Subtração com overflow sub $rd,$rs,$rt mul Multiplicação (hi ← 32bitsMSB | lo ← 32bitsLSB ) mul $rd,$rs,$rt mult mult $rs,$rt div Divisão (LO ← quociente | HI ← resto) div $rs,$rt addi Adição com overflow – segundo operando constante addi $rt,$rs,cte OP Descrição Exemplo mflo Move o dado contido no registrador LO mflo $rs mfhi Move o dado contido no registrador HI mfhi $rs

5 Exemplo add $t0, $s0, $s1 add $t1, $s0, $s2 sub $s3, $t0, $t1 a → $s0
c → $s2 d → $s3 long a,b,c,d = 42; d = (a+b) – (a+c); add $t0, $s0, $s1 add $t1, $s0, $s2 sub $s3, $t0, $t1

6 Exemplo a → $s0 ⁞ b → $s1 long a,b,c,d,e,f = 42; c → $s2
a = ((b*c) / (d*e)) – ((e+f)*(e-f)) a → $s0 b → $s1 c → $s2 d → $s3 e → $s4 f → $s5 mul $t0, $s1, $s2 mul $t1, $s3, $s4 add $t2, $s4, $s5 sub $t3, $s4, $s5 div $t0, $t1 mflo $t4 mul $t5, $t2, $t3 sub $s0, $t4, $t5 mul $t0, $s1, $s2 mul $t1, $s3, $s4 div $t0, $t1 mflo $t0 add $t1, $s4, $s5 sub $t2, $s4, $s5 mul $t1, $t1, $t2 sub $s0, $t0, $t1

7 Outros usos para o ADD/ADDI
Inicializar o valor de um registrador; addi $s0,$zero,42 Zerar um registrador add $s0,$zero,$zero addi $s0,$zero,$zero Mover dados de um registrador para outro; add $s0,$zero,$s1 Incremento; addi $s0,$s0,1 Decremento; addi $s0,$s0,-1

8 A família do ADD OP Descrição Exemplo add Adição com overflow add $rd,$rs,$rt addi Adição com overflow – segundo operando constante addi $rt,$rs,cte addu Adição sem overflow de números não sinalizados addu $rd,$rs,$rt addiu Adição sem overflow de números não sinalizados – segundo operando constante addiu $rt,$rs,cte Qual a diferença entre “com overflow” e “sem overflow”? Problema com a nomenclatura Simplesmente significa que o sinal de overflow, quando ocorrer não lançará uma exceção.

9 Decimal Comp. 2 7 0111 6 0110 5 0101 4 0100 3 0011 2 0010 1 0001 0000 -1 1111 -2 1110 -3 1101 -4 1100 -5 1011 -6 1010 -7 1001 -8 1000 Complemento de 2 O complemento de 2 é calculado pela inversão de cada um dos bits do número. Subsequentemente soma-se 1 ao valor dos bits invertidos; +210 + -210

10 Overflow Qual a diferença entre uma instrução com e sem overflow?
12710 + 00110 -00110

11 Underflow Qual a diferença entre uma instrução com e sem overflow?
- -00110 + +

12 Multiplicação de Números Binários
910 x 1010 caso resp 0x0 0x1 1x0 1x1 1 9010 Prof. Dr. rer. nat . Daniel Duarte Abdala

13 Multiplicação de Palavras
910 1 x 1010 1 a b 1 c d 1 e f g h 9010 1 Prof. Dr. rer. nat . Daniel Duarte Abdala

14 Somas com deslocamento para a Esquerda
b 1 1810 i ‘0’a+b’0’ 1 c 1810 j ‘0’i+c’0’ 1 d 1 9010 k ‘0’j+d’0’ 1 Prof. Dr. rer. nat . Daniel Duarte Abdala

15 Considerações acerca do MULT
A multiplicação de dois números de 32 bits pode gerar potencialmente um número de 64 bits significativos; Todos os registradores possuem 32 bits; Utilizamos dois registradores especiais para armazenar o resultado de 32 bits de uma multiplicação; Dois registradores especiais: HI → 32 bits mais significativos da palavra; LO → 32 bits menos significativos da palavra.

16 Exemplo ⁞ a → $s0 long a,b,c = 42; b → $s1 c = a*b; c → $s2
mult $s0,$s1 mflo $s2 mul $s2,$s0,$s1

17 Signed vs Unsigned Quais as implicações de uma instrução ser unsigned (não sinalizada)? Apenas números positivos; Dobro da quantidade representável em comparação a números sinalizados; Dimensionamento de variáveis. a → $s0 b → $s1 c → $s2 d → $s3 unsigned long a,b,c,d = 42; d = (a+b) – (a+c); addu $t0, $s0, $s1 addu $t1, $s0, $s2 subu $s3, $t0, $t1

18 Instruções Lógicas OP Descrição Exemplo and E bit a bit
and $rd,$rs,$rt or OU bit a bit or $rd,$rs,$rt nor NÃO OU bit a bit nor $rd,$rs,$rt xor OU EXCLUSIVO bit a bit xor $rd,$rs,$rt andi E bit a bit – segundo operando cte andi $rt,$rs,cte ori OU bit a bit – segundo operando cte ori $rt,$rs,cte nori NÃO OU bit a bit – segundo operando cte nori $rt,$rs,cte xori OU EXCLUSIVO bit a bit – segundo operando cte xori $rt,$rs,cte ssl Deslocamento para a esquerda (multiplicação base 2) ssl $rt,$rs,[0:31] slr Deslocamento para a direita (divisão base 2) slr $rt,$rs,[0:31] sslv sslv $rd,$rs,$rt slrv slrv $rd,$rs,$rt

19 Exemplo Testar se um número é par ou impar
Operações lógicas também são utilizadas em diversos outros contextos: Testes lógicos; Computação gráfica; Parsing de arquivos binários; etc. addi $s0,$zero, 43 #coloca em s0 o num. a ser testado addi $s1,$zero, 1 #máscara todos os bits 0 exceto o lsb and $t0,$s0,$s1 #zera todos os bits exceto o lsb #se t0 for igual a 0 o número é par, se for igual a 1 é impar

20 Multiplicação e Divisão via Deslocamento (Base 2)
ssl $s0, 1 Deslocar um número para a esquerda equivale a multiplica-lo por uma potência de 2; Deslocar um número para a direita equivale a dividi-lo por uma potência de 2 310 610


Carregar ppt "Instruções Lógicas e Aritméticas"

Apresentações semelhantes


Anúncios Google