Search
Write a publication
Pull to refresh

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 архитектурой. Было клево и безоблачно... ээх.

Очень рад тому, что вам интересна данная тема. Особенно радует то, что вы пытаетесь как-либо в этой теме помочь, даёте советы по улучшению кода и т.д. :-)

Sign up to leave a comment.

Articles