Я работаю над эмулятором Intel 8086 уже около месяца. Я решил начать подсчет циклов, чтобы сделать эмуляцию более точной и правильно ее синхронизировать с PIT.Подсчет тактов процессора Intel 8086
Цифры, используемые для каждой инструкции, подробно описаны в User Manual, но я хотел бы знать, как они рассчитываются. Например, я вывел следующие шаги для XCHG mem8,reg8
инструкции - которая занимает ровно 17 тактовых циклов в соответствии с инструкцией:
- декодировать вторые байты команды: +1 цикла;
- Перенос первого операнда из памяти во временное место: +7 циклов;
- перевод второго операнда из регистра в память: +8 циклов;
- Перенос первого операнда из временного места в место назначения: +1 цикл.
Но я, вероятно, совершенно не прав, поскольку мои рассуждения, похоже, не работают для всех инструкций. Например, я не могу понять, почему команда PUSH reg
принимает 11 тактов, тогда как команда POP reg
занимает всего 8 тактов.
Итак, не могли бы вы рассказать мне, как часы цикла проводятся в каждой инструкции или, скорее, общий метод, чтобы понять, откуда эти цифры?
спасибо.
@downvoter Не могли бы вы сказать, м Что было так неправильно с моим вопросом, что вы должны были опустить меня? – NeatMonster
проверить "8086 крошечных" источников. они могут быть вам интересны –
@AlexanderZhak Я сделал. Но 8086tiny не учитывает тактовые циклы, только инструкции. – NeatMonster