Você está na página 1de 27

NEANDER x RAMSES

(Ou porque da necessidade de


upgrade :-)

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)

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

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

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 ...).

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

Endereamento direto (absoluto)


memria
instruo
endereo

operando

Endereamento indireto
memria
instruo
endereo

endereo

operando

Endereamento imediato
memria
instruo
operando

Endereamento indexado
instruo
deslocamento

Reg. X
endereo

memria

+
operando

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

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

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

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

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

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

Comparao

Você também pode gostar