Projeto de adição da operação ADDN ao Processador ICMC e de implementação de um Jogo da Velha, componente final da avaliação de Prática em Organização de Computadores (SSC0119), ministrada pelo professor Eduardo do Valle Simões no ICMC/USP durante o primeiro semestre de 2021.
Clique aqui para assistir ao vídeo de descrição do projeto.
A operação ADDN
(Add Immediate) consiste na adição entre um registrador e um valor imediato informado. Assim, uma implementação bem-sucedida deve ser capaz de interpretar uma instrução no seguinte formato:
addn rx, ry, #NR
No exemplo, a operação deve produzir um resultado condizente ao valor contido em ry
adicionado a #NR
, um número qualquer informado. Por dividir a instrução, é possível adicionar um valor imediato de 16 bits, 216 - 1, ou 65.535.
A descrição completa da instrução está disponível no arquivo proc-addn.pdf
.
O montador foi atualizado a partir do código-fonte original e seguindo os passos disponibilizados para que fosse possível a compreensão da instrução ADDN
. Foram adicionados o código da instrução, separadores e quantidades de linhas e a lógica de montagem e escrita nos arquivos defs.h
e montador.c
.
O montador alterado está disponibilizado sob a pasta /Montador
.
O simulador foi refatorado a partir do código-fonte original, melhorando a modularização através da separação de arquivos, encapsulamento usando técnicas de TAD, além da renomeação de funções, constantes e variáveis, tornando mais inteligível e facilitando futuras alterações. Foi adicionado o código da operação ADDN
às constantes, criado um sinal de controle para IMEDIATO
no mux M4
e, então, adicionada lógica para a operação no ciclo de DECODIFICA
do processador. Para realizar a operação na ULA
, utilizou-se a lógica já implementada para a operação ADD
.
O simulador alterado está disponibilizado sob a pasta /Simulador
.
Foi escolhida a implementação de um Jogo da Velha para a segunda parte do projeto. Implementado em Assembly, o jogo permite que 2 jogadores se enfrentem e, a cada rodada, o jogador vencedor recebe um ponto no placar. Para jogar, o usuário deve digitar um número entre 1 e 9, que representa uma determinada casa do tabuleiro virtual.
O jogo desenvolvido está disponibilizado sob a pasta /Jogo
.
Gustavo Henrique Brunelli (11801053)
Matheus Henrique de Cerqueira Pinto (11911104)
Pedro Lucas de Moliner de Castro (11795784)