это что, получается, что в промежуток от M1.T1.1 до M1.T2.2 процессор продолжает выполнять предыдущую операцию?
Это конечно хорошо, но как в M1.T3.1 предсказать какие флаги префиксов будут активированы на M1.T3.2?
Я хочу отобразить правильно дизассемблированную инструкцию в момент когда ещё идет её выборка, т.е. в M1.T3.1, а не когда она начинает обрабатываться в M1.T3.2...
По каким сигналам в полу-такте M1.T3.1 можно узнать как процессор будет декодировать текущий опкод?
Проверил еще раз, вот выборка:
Скрытый текст
[свернуть]
1) С самими префиксами ок, по /BASE_SET==0 можно определить что ED/CB/DD/FD - это префикс.
2) C ED46 ок - по /ED_SET==0 можно определить, что 46 - это опкод с префиксом ED
3) С DD210000 тоже ок - по /IDX_SET==0 и /BASE_SET==0 можно определить что 21 - это базовая операция с префиксом DD
4) А вот с CB40 возникает проблема - все перечисленные флаги в M1.T3.1 не активны, /CB_SET станет активным только на следующем полу-такте M1.T3.2. Как понять что 40 это опкод для префикса CB в M1.T3.1 (когда еще идет выборка)?
а если будет торможение wait, опкод может быть выбран не в момент перехода из M1.T3.1 в M1.T3.2?
Проверил - выборка похоже всегда идет в M1.T3.1. Если активируется WAIT, то процессор просто откладывает M1.T3.1 на потом:
Скрытый текст
[свернуть]







Ответить с цитированием