
Сообщение от
CityAceE
А какие это может дать преимущества? Как я себе это понимаю, когда каждый флаг в отдельной переменной, его можно быстрее устанавливать/сбрасывать. Всего пара команд i8080 требует полного флагового регистра, и для этих команд не сильного дорого запаковать все флаги в один байт и производить обратную процедуру. А все остальные команды расставляют флаги по отдельности.
Я не знаю, питона, поэтому пример приведу на Си:
Вот, например, твой вариант RLCA:
Код:
reg_a = reg_a << 1
flag_c = bool(reg_a & 0x100)
reg_a = (reg_a | flag_c) & 0xff
if not i8080:
flag_h = False
fflag_n(False)
fflag_3(bool(reg_a & 0b00001000))
fflag_5(bool(reg_a & 0b00100000))
И как можно оптимально это эмулировать (без учета универсальности Z80/8080):
Код:
reg_A = (reg_A << 1) | (reg_A >> 7);
reg_F = (reg_A & CONST_53C) | (reg_F & CONST_SZPH);