|
|
1 month ago | |
|---|---|---|
| CNN | 1 month ago | |
| README.md | 2 months ago | |
| RNN | 1 month ago | |
README.md
class VonNeumannMachine: def init(self,memory_size=256): self.memory = [0] * memory_size self.pc = 0 self.registers = {'A':0,'B':0,'C':0} self.halted = False def load_program(self,program): for i,val in enumerate(program): self.memory[i]=val def execute_instruction(self,instruction): if not instruction or instruction == 0: return parts = instruction.split() opcode = parts[0] operands = parts[1:] if len(parts) > 1 else[] if opcode == 'LOAD': reg, addr = operands[0], int(operands[1]) self.registers[reg] = self.memory[addr] elif opcode == 'ADD': reg1, reg2 = operands[0], operands[1] self.registers[reg1] += self.registers[reg2] elif opcode == 'MUL': reg1, reg2 = operands[0], operands[1] self.registers[reg1] *= self.registers[reg2] elif opcode == 'STORE': addr, reg = int(operands[0]), operands[1] self.memory[addr] = self.registers[reg] elif opcode == 'JMP': addr = int(operands[0]) self.pc = addr-1 elif opcode == 'HALT': self.halter = True def run(self): while not self.halted and self.pc < len(self.memory): current = self.memory[self.pc] if isinstance(current, str): self.execute_instruction(current) self.pc += 1 program = [ "JMP 1", "LOAD A 8", "LOAD B 9", "ADD A B", "LOAD C 10", "MUL A C", "STORE 11 A", "HALT", 5, 3, 2, 0 ] vm = VonNeumannMachine() vm.load_program(program) vm.run() print("\n最终结果:") print("寄存器A的值:", vm.registers['A']) print("内存地址11的值:", vm.memory[11]) print("寄存器B的值:", vm.registers['B']) print("寄存器C的值:", vm.registers['C'])