from machine import Pin
from time import sleep
# LEDs de etapa (pinos GP do Raspberry Pi Pico)
led_fetch = Pin(2, Pin.OUT) # GP2 - verde
led_decode = Pin(4, Pin.OUT) # GP4 - amarelo
led_execute = Pin(5, Pin.OUT) # GP5 - vermelho
def apagar_leds():
led_fetch.off()
led_decode.off()
led_execute.off()
apagar_leds()
# Memória de instruções
programa = [
"LOAD R0 10",
"LOAD R1 2",
"SUB R0 R1",
"LOAD R0 4",
"LOAD R1 3",
"MUL R0 R1",
]
# Registradores
registradores = {
"R0": 0,
"R1": 0,
"R2": 0
}
# Program Counter
pc = 0
while pc < len(programa):
print()
print("==============================")
# =========================
# FETCH
# =========================
instrucao = programa[pc]
apagar_leds()
led_fetch.on()
print("FETCH")
print("PC =", pc)
print("Instrucao:", instrucao)
sleep(1)
# =========================
# DECODE
# =========================
partes = instrucao.split()
comando = partes[0]
apagar_leds()
led_decode.on()
print()
print("DECODE")
print("Comando:", comando)
sleep(1)
# =========================
# EXECUTE
# =========================
apagar_leds()
led_execute.on()
print()
print("EXECUTE")
if comando == "LOAD":
registrador = partes[1]
valor = int(partes[2])
registradores[registrador] = valor
print("Carregando", valor, "em", registrador)
elif comando == "ADD":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = registradores[r1] + registradores[r2]
print(r1, "+", r2)
elif comando == "SUB":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = registradores[r1] - registradores[r2]
print(r1, "-", r2)
elif comando == "MUL":
r1 = partes[1]
r2 = partes[2]
registradores[r1] = registradores[r1] * registradores[r2]
print(r1, "*", r2)
elif comando == "STORE":
origem = partes[1]
destino = partes[2]
registradores[destino] = registradores[origem]
print("Copiando", origem, "para", destino)
print()
print("REGISTRADORES")
print("R0 =", registradores["R0"])
print("R1 =", registradores["R1"])
print("R2 =", registradores["R2"])
print("==============================")
sleep(1)
# Próxima instrução
pc += 1
apagar_leds()
print()
print("Fim do programa.")