
Сообщение от
Titus
Еще раз настоятельно рекомендую сделать дробные тайминги в тесте. Иначе точность его практически никакая, если говорить об УКНЦ.
Но даже такой точности достаточно, чтобы задаться несколькими вопросами.
Чем вызвано отличие таймингов следующих команд:
Код:
R0 (R0) (R2)+ @(R2)+ -(R1) @-(R1) Addr (PC)+ @Tab(R0)
Mov @(R2)+ 47 70 70 80 70 83 82 82 96
Mov Addr 47 66 66 82 66 82 80 80 96
MovB @(R2)+ 47 71 71 85 80 94 93 93 107
MovB Addr 47 80 80 93 80 93 85 85 106
Cmp @(R2)+ 47 60 60 80 66 82 82 70 96
Cmp Addr 47 66 66 80 66 80 80 66 94
CmpB @(R2)+ 47 60 60 80 66 82 82 82 96
CmpB Addr 47 66 66 80 66 80 80 80 94
Add @(R2)+ 47 72 72 85 80 94 93 93 107
Add Addr 47 79 79 93 79 93 85 85 106
Из первого столбца однозначно следует, что чтение первого аргумента занимает в указанных командах строго одинаковое время.
Тогда как объяснить:
1. Почему Mov @(R2)+,(R2)+ выполняется медленнее, чем Mov nn(PC),(R2)+, но MovB @(R2)+,(R2)+ выполняется быстрее, чем MovB nn(PC),(R2)+, при том что у команд Cmp и CmpB таких отличий нет.
2. Почему команды Mov @(R2)+,(R0), MovB @(R2)+,(R0) и Add @(R2)+,(R0) почти не отличаются по продолжительности.
3. Почему команда Add @(R2)+,@(R2)+ выполняется значительно быстрее, чем Add @(R2)+,@-(R1), тогда как команды Add nn(PC),@(R2)+ и Add nn(PC),@-(R1) имеют одинаковую продолжительность ( играет роль использование одного и того же регистра и в источнике, и в приёмнике ? ).
...
P.S. Честно говоря - вручную переписывать числа из фоток довольно сложно ( иногда случаются ошибки и приходится постоянно перепроверять ).
Если перед запуском тестов загрузить монитор NC11SJ.SYS ( с любого носителя, не обязательно с HX ) и нажать в подключенном к COM-порту терминале кнопку [Лог] - результаты тестов сразу запишутся в текстовый файл на PC.