# CSPT10 Computer Architecture I
```
import sys
# a simple data-driven machine that reads instructions out of memory
# and executes them
PRINT_HI = 1
HALT = 2
PRINT_NUM = 3
SAVE = 4 # save a value to a register
PRINT_REGISTER = 5 # prints the value of a register
ADD = 6 # adds values from two registers x, y and stores it in register x
pc = 0 # program counter - points to the instruction we're currently executing
running = True
memory = [
PRINT_HI, # prints hi
SAVE, # saves 65 into register 2
65,
2,
SAVE, # saves 20 into register 3
20,
3,
ADD, # take values in reg2 (65) and reg3 (20) and store the sum in reg2 (85)
2,
3,
PRINT_REGISTER, # print 85
2,
HALT # stop the program
]
registers = [0] * 8
while running:
commandToExecute = memory[pc]
if commandToExecute == PRINT_HI:
print("hi")
pc += 1
elif commandToExecute == HALT:
running = False
elif commandToExecute == PRINT_NUM:
numToPrint = memory[pc + 1]
print(numToPrint)
pc += 2
elif commandToExecute == PRINT_REGISTER:
reg = memory[pc + 1]
print(registers[reg])
pc += 2
elif commandToExecute == SAVE:
numToSave = memory[pc + 1]
registerToSaveItIn = memory[pc + 2]
registers[registerToSaveItIn] = numToSave
pc += 3
elif commandToExecute == ADD:
regA = memory[pc + 1]
regB = memory[pc + 2]
sumOfRegisters = registers[regA] + registers[regB]
registers[regA] = sumOfRegisters
pc += 3
else:
print("ehh idk what to do")
sys.exit(1)
```