Skip to content
/ jhipo Public

Java implementation of (simple) hypothetical computer to help the study of Computer Organization and Architecture.

Notifications You must be signed in to change notification settings

pjandl/jhipo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JHIPO

Java implementation of (simple) hypothetical computer to help the study of Computer Organization and Architecture.


HIPO é um computador hipotético simples que possibilita o estudo da organização de computadores e também dos fundamentos da programação assembly.

Organização

A organização interna do HIPO, que pode ser vista na Figura 1, exibe as seguintes características:

  • Palavra de dados de 08 bits (um byte), ou seja, seu barramento de dados possui 08 bits (um byte) de largura.
    • Seu barramento de endereços também possui 08 bits de largura, ou seja, permite o endereçamento de 2^8 = 256 posições de um byte, de maneira que:
    • Sua memória é organizada como 256 x 01 byte (256 posições com um byte de largura ou, simplesmente, 256 por um); e
    • Podem existir até 256 dispositivos de entrada e saída (E/S ou I/O) distintos, cujas operações de leitura (entrada) e escrita (saída) envolvem a transferência de um byte a cada operação.
  • Possui os seguintes registradores internos:
    • ACC (Accumulator ou Acumulador) com 08 bits de largura, destinado a conter o valor de operandos e de resultados de outras operações;
    • PC (Program Counter) com 08 bits de largura, que contém o endereço da posição de memória correspondente à execução de um programa;
    • SP (Stack Pointer) com 08 bits de largura, que indica o endereço da memória onde se armazena o próximo endereço de retorno;
    • RI (Registrador de Instruções) com 08 bits de largura, que contém o código da instrução corrente;
    • RDM (Registrador de Dados de Memória ou E/S) com 08 bits de largura, destinado a conter os dados lidos ou escritos na memória ou dispositivos de I/O;
    • REM (Registrador de Endereços de Memória ou E/S) com 08 bits de largura, destinado a conter os endereços de memória ou dispositivos de I/O necessários as operações de leitura e escrita;
    • Além de duas flags de estado (ou códigos de condição), com 01 bit cada uma, para sinalizar a presença de valores N (negativo) e Z (zero) no registrador ACC (acumulador).
  • Decodificador capaz de interpretar seu conjunto de instruções.
  • Unidade de controle que gera sinais de controle para operar tanto os componentes internos existentes por meio de micro-operações padronizadas, como também a memória e os dispositivos de E/S conectados aos seus barramentos de dados, endereços e controle.
  • Unidade Lógica e Aritmética (ULA) responsável pela execução das operações aritméticas e lógicas sobre os dados do processador HIPO, armazenando seus resultados no registrador ACC (acumulador).

O HIPO possui um único modo de endereçamento, denominado modo direto (ou absoluto), onde qualquer operando que corresponda a um endereço é tratado como um endereço físico de memória ou de dispositivo, ou seja, o valor deste operando é empregado diretamente como um endereço de memória/dispositivo, sem qualquer tradução, modificação ou tratamento.

Desta maneira o processador HIPO deve ser minimamente conectado a um banco de memória por meio de seus barramentos de endereço (08 bits de largura), de dados (08 bits de largura) e de controle (operações de read e write). O banco de memória pode ter tamanho máximo de 256 bytes. Também é possível sua interligação com até 256 dispositivos de E/S diferentes, os quais podem prover valores de entrada, comandos ou oferecer sinalização de saída ou acionamento de outros elementos.

About

Java implementation of (simple) hypothetical computer to help the study of Computer Organization and Architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages