Anda di halaman 1dari 14

24/08/2010

NEANDER x RAMSES
(Ou porque da necessidade de upgrade :-)

Texto original: ftp://ftp.inf.ufrgs.br/pub/inf108/Ramses-Instrucoes.ppt

Neander - caractersticas
Largura de dados e endereos de 8 bits Dados representados em complemento de dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 cdigos de condio: negativo (N) e zero (Z)

24/08/2010

Instrues do Neander
Cdigo 0000 0001 0010 0011 0100 0101 0110 1000 1001 1010 1111 Instruo NOP STA end LDA end ADD end OR end AND end NOT JMP end JN end JZ end HLT Comentrio nenhuma operao armazena acumulador - (store) carrega acumulador - (load) soma ou lgico e lgico inverte (complementa) acumulador desvio incondicional - (jump) desvio condicional - (jump on negative) desvio condicional - (jump on zero) trmino de execuo - (halt)

Modo de endereamento
memria
endereo

operando

24/08/2010

Programa Exemplo
Somar (totalizar) n posies consecutivas de memria, a partir do endereo inicial e. (Sem consistncia sobre os valores de n e e). Em alto nvel, o programa seria: total:=0 ponteiro := e contador := n lao: if contador = 0, termina total := total + mem(ponteiro) ponteiro := ponteiro + 1 contador := contador 1 goto lao

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132 133 134

Instruo LDA 132 STA 130 LDA 129 STA ponteiro LDA 128 STA 131 JZ 34 LDA 130 ADD mem(ponteiro) STA 130 LDA ponteiro ADD 134 STA ponteiro LDA 131 ADD 133 STA 131 JMP 12 HLT n e tot cont 0 255 1

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial total contador constante zero constante -1 constante 1

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132 133 134

Instruo LDA 132 STA 130 LDA 129 STA 17 LDA 128 STA 131 JZ 34 LDA 130 ADD 17 STA 130 LDA 17 ADD 134 STA 17 LDA 131 ADD 133 STA 131 JMP 12 HLT n e tot cont 0 255 1

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial total contador constante zero constante -1 constante 1

Ramses - caractersticas
quatro modos de endereamento, dois registradores de uso geral, um registrador de ndice, indicadores de carry, negativo e zero, instrues adicionais (chamada de subrotina, negao e deslocamento de bits, etc ...).

24/08/2010

Instrues do Ramses
Cdigo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Instruo NOP STR r end LDR r end ADD r end OR r end AND r end NOT r SUB r end JMP end JN end JZ end JC end JSR end NEG r SHR r HLT Operao Executada nenhuma operao armazena registrador na memria - (store) carrega registrador da memria - (load) adio - soma memria ao registrador "ou" (adio lgica) - resultado no registrador "e" (multiplicao lgica) - resultado no registrador inverte (complementa para 1) registrador subtrao - subtrai memria do registrador desvio incondicional - (jump) desvio condicional se < - (jump on negative) desvio condicional se = - (jump on zero) desvio condicional se carry = 1 - (jump on carry) desvio para subrotina - (jump subroutine) troca de sinal - (negate) deslocamento para a direita - (shift right) parada - (halt)

Registradores e Modos de endereamento


00 = A (registrador RA) 01 = B (registrador RB) 10 = X (registrador de ndice) 11 = nenhum registrador 00 = 01 = 10 = 11 = direto indireto imediato indexado

24/08/2010

Endereamento direto (absoluto)


m e m r ia
in s t r u o e n d e re o

o p e ra n d o

Endereamento indireto
m e m ria in s tru o e n d e re o e n d e re o

o p e ra n d o

24/08/2010

Endereamento imediato
m e m r ia in s tr u o o p e ra n d o

Endereamento indexado
instruo deslocamento Reg. X endereo memria

+
operando

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132 133 134

Instruo LDA 132 STA 130 LDA 129 STA 17 LDA 128 STA 131 JZ 34 LDA 130 ADD 17 STA 130 LDA 17 ADD 134 STA 17 LDA 131 ADD 133 STA 131 JMP 12 HLT n e total contador 0 255 1

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial total contador constante zero constante -1 constante 1

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132 133 134

Instruo LDR A 132 STR A 130 LDR A 129 STR A 17 LDR A 128 STR A 131 JZ 34 LDR A 130 ADD A 17 STR A 130 LDR A 17 ADD A 134 STR A 17 LDR A 131 ADD A 133 STR A 131 JMP 12 HLT n e total contador 0 255 1

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial total contador constante zero constante -1 constante 1

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132 133 134

Instruo LDR A #0 STR A 130 LDR A 129 STR A 17 LDR A 128 STR A 131 JZ 34 LDR A 130 ADD A 17 STR A 130 LDR A 17 ADD A #1 STR A 17 LDR A 131 ADD A #255 STR A 131 JMP 12 HLT n e total contador 0 255 1

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial total contador constante zero constante -1 constante 1

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131

Instruo LDR A #0 STR A 130 LDR A 129 STR A 17 LDR A 128 STR A 131 JZ 34 LDR A 130 ADD A 17 STR A 130 LDR A 17 ADD A #1 STR A 17 LDR A 131 SUB A #1 STR A 131 JMP 12 HLT n e total contador

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132

Instruo LDR A #0 STR A 130 LDR A 129 STR A 132 LDR A 128 STR A 131 JZ 34 LDR A 130 ADD A 132,I STR A 130 LDR A 132 ADD A #1 STR A 132 LDR A 131 SUB A #1 STR A 131 JMP 12 HLT n e total contador ponteiro

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 128 129 130 131 132

Instruo LDR A #0 STR A 130 LDR A 129 STR A 132 LDR B 128 STR A 131 JZ 34 LDR A 130 ADD A 132,I STR A 130 LDR A 132 ADD A #1 STR A 132 LDR A 131 SUB B #1 STR A 131 JMP 12 HLT n e total contador ponteiro

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador

; retorna ao incio do lao nmero de posies endereo inicial

10

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 128 129 130 132

Instruo LDR A #0 STR A 130 LDR A 129 STR A 132 LDR B 128 JZ 28 LDR A 130 ADD A 132,I STR A 130 LDR A 132 ADD A #1 STR A 132 SUB B #1 JMP 10 HLT n e total ponteiro

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador ; retorna ao incio do lao nmero de posies endereo inicial

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 128 129 130 132

Instruo LDR A #0 STR A 130 LDR X 129 STR A 132 LDR B 128 JZ 28 LDR A 130 ADD A 0,X STR A 130 LDR A 132 ADD X #1 STR A 132 SUB B #1 JMP 10 HLT n e total ponteiro

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro

; decrementa contador ; retorna ao incio do lao nmero de posies endereo inicial

11

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 128 129 130

Instruo LDR A #0 STR A 130 LDR X 129 LDR B 128 JZ 22 LDR A 130 ADD A 0,X STR A 130 ADD X #1 SUB B #1 JMP 8 HLT n e total

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro ; decrementa contador ; retorna ao incio do lao nmero de posies endereo inicial

Endereo 0 2 4 6 8 10 12 14 16 18 20 22 128 129 130

Instruo LDR A #0 STR A 130 LDR X 129 LDR B 128 JZ 22 LDR A 130 ADD A 0,X STR A 130 ADD X #1 SUB B #1 JMP 8 HLT n e total

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; carrega total no acumulador ; soma com posio de memria ; atualiza total ; incrementa ponteiro ; decrementa contador ; retorna ao incio do lao nmero de posies endereo inicial

12

24/08/2010

Endereo 0 2 4 6 8 10 12 14 16 18 128 129 130

Instruo LDR A #0 LDR X 129 LDR B 128 JZ 16 ADD A 0,X ADD X #1 SUB B #1 JMP 6 STR A 130 HLT n e total

; inicializa (zera) o total ; inicializa ponteiro ; inicializa contador ; testa se contador zero ; soma com posio de memria ; incrementa ponteiro ; decrementa contador ; retorna ao incio do lao ; atualiza total nmero de posies endereo inicial

Comparao
Neander
Instrues: 11*n + 8 Leituras: 27*n + 18 Escritas: 4*n + 3

Ramses
Instrues: 5*n + 6 Leituras: 10*n + 13 Escritas: 1

Para n=30:
Instrues - Neander 338 x Ramses 156 Acessos - Neander 951 x Ramses 314

13

24/08/2010

Comparao

14