Почти добился изначально намечавшейся цели - ускорить экзорциста в 2 раза относительно исходного варианта. Резервы для "не почти" есть, но мне как-то надоело.
Косметическое изменение - CRC теперь печатается большими буквами.
Почти добился изначально намечавшейся цели - ускорить экзорциста в 2 раза относительно исходного варианта. Резервы для "не почти" есть, но мне как-то надоело.
Косметическое изменение - CRC теперь печатается большими буквами.
Последний раз редактировалось ivagor; 14.12.2013 в 10:49.
А этот экзор только для вектора или можно к любым компам адаптировать?
Он для CP/M, ничего специфичного для вектора там нет. Сайт проекта. Отмечу, что на сайте нет результатов 1821ВМ85, которые получил dk_spb. Зато там есть интересные результаты AMDшных клонов, которые оказались не 100% клонами.
Важный момент - мои варианты переделаны так, чтобы корректно сохранять значение всех флагов без маскировки. Из за этого результаты на 8080 и подобных будут совпадать с оригинальным вариантом, а на 8085 и КР580ВМ1 будут отличаться в лучшую сторону
---------- Post added at 15:35 ---------- Previous post was at 15:22 ----------
От CP/M (или от чего-то эмулирующего CP/M) требуются только ДВЕ функции - печатать текстовой строки и символа.
Столкнулся с интересным моментом. Насколько я понял, при очень большой тактовой эмулируемого вектора в emu время прогона ощутимо зависит от быстродействия эмулирующего компа. В результате проскочившая в одном месте абсолютная величина выигрыша обновленного эксисайзера под вопросом, а вот относительные выигрыши по времени примерно верны.
Не прошло и полгода - определил время прогона 8080exe7.com на векторе - 1 час 44 минуты и примерно 10 секунд. Замерял в v06cc и VV6.82.
Время прогона оригинального эксисайзера на векторе (VV6.82) - 3 часа 1 минута
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В связи с тестом на специалисте нужно отметить, что измененный посттестовый (после iut) фрагмент в 8080exe7 не для всех компов годится. Он был введен для корректного тестирования продвинутых клонов ВМ80 (ВМ85, ВМ1) и нормально работает на векторе и его клонах, но на специалисте есть проблема с inx sp/dcx sp
Самый простой вариант - откатить изменение постестового фрагмента, т.е. после
В выложенном exe7 такКод:iut: ds 4 ; max 4 byte instruction under test ;#idb ld (spat),sp replaced with the following code ;#idb Must be very careful to preserve registers and flag ;#idb state resulting from the test. The temptation is to use the ;#idb stack - but that doesn't work because of the way the app ;#idb uses SP as a quick way of pointing to memory. ;#idb Bit of a code smell, but I can't think of an easier way.
А в исходном было такКод:;!!!{ shld SetHL1+1 pop h push psw xthl shld spat-2 lxi h,0 ; jc temp1 ;jump on the state of the C flag set in the test dad sp ;this code will clear the C flag (0 + nnnn = nc) ; jmp temp2 ;C flag is same state as before ;temp1: dad sp ;this code will clear the C flag (0 + nnnn = nc) ; stc ;C flage needs re-setting to preserve state ;temp2: shld spat ;#idb lxi sp,spat-2 ; push psw ; save other registers push b push d ; lhld temp SetHL1: lxi h,0 ;!!!} push h
Т.е. если планируется использовать 8080exe7 не на векторе или его клонах, то лучше вернуть посттестовый фрагмент к исходному виду. При этом выигрыш по скорости останется, но тестирование ВМ1 и ВМ85 будет некорректным, как и с оригинальным эксисайзером.Код:shld temp lxi h,0 jc temp1 ;jump on the state of the C flag set in the test dad sp ;this code will clear the C flag (0 + nnnn = nc) jmp temp2 ;C flag is same state as before temp1: dad sp ;this code will clear the C flag (0 + nnnn = nc) stc ;C flage needs re-setting to preserve state temp2: shld spat lhld temp ;#idb lxi sp,spat push psw ; save other registers push b push d push h
Последний раз редактировалось ivagor; 17.08.2014 в 19:22.
Со специалистом все отлично, просто в старших адресах там ПЗУ и УВВ, что для "нового" посттестового фрагмента не подходит. Старый посттестовый фрагмент работает штатно.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)