Implementação do clássico MineSweeper utilizando Assembly MIPS, desenvolvida como projeto da disciplina de Arquitetura e Organização de Computadores.
Este projeto tem como objetivo explorar conceitos de baixo nível, como manipulação direta de memória, uso de registradores e controle de fluxo, por meio da implementação da lógica do jogo MineSweeper.
A aplicação simula integralmente o comportamento do jogo, incluindo:
- Revelação de células
- Identificação de bombas
- Expansão de áreas seguras
- Verificação de condição de vitória
- Guilherme Viana Batista
- Antônio José Monteiro Neto
O sistema é estruturado em funções modulares, cada uma responsável por uma parte da lógica do jogo.
Função principal responsável pela execução do jogo.
Responsabilidades:
- Gerenciamento de contexto (
save_context/restore_context) - Carregamento de parâmetros do tabuleiro
- Cálculo de endereços na memória
- Controle do fluxo principal do jogo
- Integração com funções auxiliares
Calcula o número de bombas adjacentes a uma célula.
Detalhes técnicos:
- Iteração em vizinhança 3x3
- Uso de loops com
branch - Incremento condicional com
addi
Responsável pela expansão de células seguras.
Comportamento:
- Verifica células adjacentes
- Chama
CountAdjacentBombs - Expande recursivamente regiões sem bombas
Determina se o jogador venceu.
Critério:
- Todas as células seguras foram reveladas
O acesso ao tabuleiro é feito via cálculo manual de índice:
-
Uso de
sllpara multiplicação por potência de 2 -
Combinação de:
- deslocamento de linha
- deslocamento de coluna
-
Acesso final com
lw
Simulação de estruturas de alto nível:
| Estrutura | Instruções |
|---|---|
if |
beq, bne |
for |
bgt, bge |
| chamada de função | jal |
| Valor | Significado |
|---|---|
-1 |
Bomba |
-2 |
Célula não revelada |
>= 0 |
Número de bombas adjacentes |
⚠️ Este projeto foi desenvolvido para execução em simuladores MIPS.
- MARS ou SPIM
- Carregue o arquivo
.asmno simulador - Execute o programa
- Interaja conforme a lógica implementada
- Manipulação de memória em baixo nível
- Uso eficiente de registradores
- Implementação de estruturas de controle sem abstrações
- Organização de código Assembly em módulos
- Projeto focado em lógica — não possui interface gráfica
- Implementação orientada à performance e controle manual
- Estrutura baseada em chamadas de função e reutilização de código
Disciplina: Arquitetura e Organização de Computadores Curso: Ciência da Computação Instituição: Universidade Federal do Cariri (UFCA)
Este projeto é acadêmico e não possui licença definida.