Так я и сам смотрел на это место два дня и мог бы обратить внимание, но в упор не видел. Заметил только когда напечатал табличку профайлера и посмотрел на число вызовов event.get().
Оставшееся всё вполне равномерно, вряд ли можно что-то принципиально улучшить в эмуляции процессора.
Самые популярные функции (отсортировано по количеству вызовов). По общему времени лидер - j<cond>, но у нее и количество вызовов большое, так что вроде пропорционально.
Код:
Tue Jan 1 16:19:19 2019 prof.out
28186074 function calls (28179897 primitive calls) in 24.967 seconds
Ordered by: call count
ncalls tottime percall cumtime percall filename:lineno(function)
8216227 1.807 0.000 1.807 0.000 i8080.py:338(inc_pc)
6406851 3.577 0.000 18.481 0.000 i8080.py:1128(core)
3540402 0.678 0.000 0.678 0.000 i8080.py:315(read_mem)
1598541 0.494 0.000 0.494 0.000 i8080.py:63(get_conditions)
1595476 3.415 0.000 5.177 0.000 i8080.py:865(b11000010)
1428592 1.612 0.000 1.925 0.000 i8080.py:669(b01000000)
1412212 1.731 0.000 1.731 0.000 i8080.py:170(or_a)
1398364 1.536 0.000 3.577 0.000 i8080.py:783(b10110000)
1394605 1.400 0.000 1.714 0.000 i8080.py:494(b00001011)
127088 0.092 0.000 0.092 0.000 i8080.py:353(dec_reg)
125392 0.141 0.000 0.256 0.000 i8080.py:536(b00000101)
117377 1.023 0.000 1.023 0.000 i8080.py:245(byte2mem)
83329 0.163 0.000 0.163 0.000 i8080.py:181(cp_a)
50121 0.084 0.000 0.084 0.000 i8080.py:148(and_a)
49003 0.100 0.000 0.157 0.000 i8080.py:469(b00111010)
48731 0.068 0.000 0.180 0.000 i8080.py:1016(b11100110)
47052 0.066 0.000 0.188 0.000 i8080.py:1040(b11111110)
41886 0.052 0.000 0.077 0.000 i8080.py:661(b01110000)
41688 0.047 0.000 0.056 0.000 i8080.py:477(b00000011)
39268 0.043 0.000 0.060 0.000 i8080.py:435(b00001010)
36239 0.041 0.000 0.120 0.000 i8080.py:799(b10111000)
21200 0.020 0.000 0.020 0.000 i8080.py:343(inc_reg)