Comments 6
Писать интерпретатор команд на интерпретаторе...
А как еще заставить современный процессор работать с скоростью Intel 4004? :-)
А вообще автор молодец! Единственный способ выучить новый язык программирования это практическая работа c ним. Можно прочесть кучу книг по языку и не уметь на нем программировать. Только практика реально учит пользоваться функционалом языка. Пока не наступишь на все возможные грабли, не поймешь теорию. Говоря другими словами: "Ответы не будут услышаны, пока не заданы вопросы". Вот практика как раз и формирует эти самые вопросы. Ну а ответы уже можно найти в книгах.
Да и по Питону я бы рекомендовал прочесть Марка Лутца. Причем в оригинале и на английском. За одно и английский выучите :-D
tkinter, создать окно, где пользователь вводит программу и ему выводится результат (дабы не приходилось устанавливать сам Python, различные IDE к нему для запуска и теста эмулятора).
Возьмите сразу tcl/tk :)
if / elif
стильно/модно/моледежно заменять на словарь:
cmd_dict = {
0x0: CPU.NOP,
0x6: CPU.INC,
...
}
... # Где-то в коде run()
cmd = cmd_dict.get(opcode)
if not cmd:
raise UncnownOpCode() # или print + return в зависимости от реализации.
address = memory[self.pc + 1]
cmd(self, address)
...
для CPU.NOP
надо, правда, поменять сигнатуру что бы принимал address
или завернуть в lambda безадресные команды:
cmd_dict = {
0x0: lambda *args, **kwargs: CPU.NOP,
0x6: CPU.SUB,
...
}
А так спасибо @Yura_FX вспомнил детство за 8051 архитектурой. Было клево и безоблачно... ээх.
Сказ о том, как я эмулятор Intel 4004 на Python писал (часть 2)