Máquinas hipotéticas da Universidade Federal do Rio Grande do Sul: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
nova página: {{Info/Software | nome = Neander/Ahmes/Ramses/Cesar | logo = | imagem = | legenda = | desenvolvedor = …
 
Linha 227:
|}
 
==Ramses==
 
===Características===
 
* Quatro modos de endereçamento (direto, indireto, imediato e indexado)
* Dois registradores de uso geral, RA e RB
* Um registrador de índice, RX
* Indicadores de carry, negativo e zero,
* Instruções adicionais ao [[Neander]] e o [[Ahmes]] com chamada de subrotina, negação e deslocamento de bits, além de outras.
 
===Conjunto de Instruções do Ramses===
 
Para se construir o código binário de uma instrução no Ramses, é preciso concatenar os bits relativos a uma operação, um registrador e um modo de endereçamento. Por exemplo, a instrução 00010000 (em binário), é uma instrução de armazenamento, usando o registrador RA, no modo de endereçamento direto. Caso se queira alterar o registrador de A para B, altera-se o registrador (5° e 6° bits) de 00 para 01. Neste caso, a instrução teria o código binário 00010100. Alterando, desta vez, o modo de endereçamento para indexado, por exemplo, o código da instrução resultaria em 00010111.
 
====Operações====
 
{| class="wikitable" width="70%"
|-
![[Código]]
!Instrução
!Descrição
|-
|align="left"|0000
|align="left"|NOP
|align="left"|nenhuma operação
|-
|align="left"|0001
|align="left"|STR r end
|align="left"|armazena registrador na memória
|-
|align="left"|0010
|align="left"|LDR r end
|align="left"|carrega registrador da memória
|-
|align="left"|0011
|align="left"|ADD r end
|align="left"|soma valor da memória ao registrador
|-
|align="left"|0100
|align="left"|OR r end
|align="left"|operação lógica 'ou' entre o registrador e o endereço. resultado vai para o registrador.
|-
|align="left"|0101
|align="left"|AND r end
|align="left"|operação lógica 'e' entre o registrador e o endereço. resultado vai para o registrador.
|-
|align="left"|0110
|align="left"|NOT r
|align="left"|complemento de 1 no registrador (inverte o valor dos bits)
|-
|align="left"|0111
|align="left"|SUB r end
|align="left"|subtrai valor da memória do registrador
|-
|align="left"|1000
|align="left"|JMP end
|align="left"|Desvio incondicional. PC← end.
|-
|align="left"|1001
|align="left"|JN end
|align="left"|desvio condicional se negativo, PC ← end
|-
|align="left"|1010
|align="left"|JZ end
|align="left"|desvio condicional se zero, PC ← end
|-
|align="left"|1011
|align="left"|JC end
|align="left"|desvio condicional se foi-um, PC ← end
|-
|align="left"|1100
|align="left"|JSR end
|align="left"|desvio para subrotina
|-
|align="left"|1101
|align="left"|NEG r
|align="left"|troca de sinal. Complemento de 2.
|-
|align="left"|1110
|align="left"|SHR r
|align="left"|deslocamento para a direita
|-
|align="left"|1111
|align="left"|HLT
|align="left"|término de execução - (halt)
|-
|}
 
====Registradores====
 
{| class="wikitable" width="30%"
|-
![[Código]]
!Descrição
|-
|00
|align="left"|Registrador RA
|-
|01
|align="left"|Registrador RB
|-
|10
|align="left"|Registrador RX - Registrador de Índice
|-
|11
|align="left"|Nenhum registrador
|-
|}
 
====Modos de Endereçamento====
 
{| class="wikitable" width="20%"
|-
![[Código]]
!Descrição
|-
|00
|align="left"|direto
|-
|01
|align="left"|indireto
|-
|10
|align="left"|imediato
|-
|11
|align="left"|indexado
|-
|}
 
 
Linha 234 ⟶ 363:
 
=={{Ligações externas}}==
*[ftp://ftp.inf.ufrgs.br/pub/inf107/ Sítio público da UFRGS onde se pode realizar o download dadas ferramentaferramentas Neander e Ahmes]
*[ftp://ftp.inf.ufrgs.br/pub/inf108/ Sítio público da UFRGS onde se pode realizar o download das ferramentas Ramses, Cesar e Daedalus]
*[http://inf.ufrgs.br/~vbuaraujo/software/neander/neander.html Simulador Online do Neander]
*[http://www.iesplan.br/~augustus/S2_02_arquitetura/aulas/Neander.pdf Descrição do Neander - Faculdades Planalto - DF]