Este repositório contém a implementação de um simulador de CPU simples desenvolvido em linguagem C. A aplicação simula o ciclo de execução de instruções, desde a leitura de um programa em arquivo até a decodificação e execução das instruções em uma memória simulada.
O projeto tem como objetivo demonstrar o funcionamento básico de uma Unidade Central de Processamento (CPU), incluindo a manipulação de registradores, leitura de memória, execução de instruções aritméticas e lógicas, desvios condicionais e armazenamento em memória.
- Simulação de registradores de propósito geral (R0 a R7).
- Simulação dos registradores PC (Program Counter), IR (Instruction Register), MBR (Memory Buffer Register), MAR (Memory Address Register) e IMM (Immediate).
- Leitura de um arquivo de texto contendo instruções (programa.txt).
- Decodificação e execução de instruções personalizadas, tais como:
- Aritméticas:
add,sub,mul,div,addi,subi,muli,divi - Lógicas:
and,or,xor,not - Comparações:
cmp - Desvios:
je,jne,jl,jle,jg,jge,jmp - Transferência de dados:
ld,st,movr,movi - Deslocamentos:
lsh,rsh - Controle:
nop,hlt
- Aritméticas:
- Registradores:
reg[8],pc,ir,mbr,mar,imm - Memória: vetor
memoria[154]simula o armazenamento principal - Leitura de programa: a função
carregartxt()lê o arquivoprograma.txt, converte instruções em formato binário e as armazena na memória - Execução:
busca(): realiza a leitura da próxima instruçãoopcode(): identifica a operação a ser realizada- Outras funções auxiliam na decodificação dos registradores envolvidos