Но скорость всё равно не "волшебная". Когда-то я баловался с эмулятором "Спектрума", и он способен был работать в реалтайме на 386DX-33. И не просто работать, а исполнять, скажем, многоголосую музыкальную заставку в Fairlight, и всякие прочие программистские трюки.
Так это же эмулятор спектрума, а не его описания на xHDL, я когда-то писал эмулятор 8080, он на 386dx40 работал быстрей, чем 8080, но ассемблер 8080 на х86 ложится как родной.
И, что, от того, что добавляется лишний уровень абстракции, замедление в тысячу раз? Оно понятно, в общем, но как-то многовато... Что же до ассемблера 8080 и 8086, то существовал транслятор из текстов 8080 в текст 8086, распространявшийся непосредственно Интелом. Там лишь нескольким командам не было прямой замены, приходилось "корячиться". Но Z80 - дело другое, и эмулированный процессор находился в памяти, а не в регистрах х86. И надо было ещё справляться с графикой, которая у PC и ZX оччень горбатая, и у каждого - по-своему.
И, что, от того, что добавляется лишний уровень абстракции
Даже два уровня, хотя бог его знает как эмулятор БК сделан, но вообще, у таких процессоров есть железо и микропрограммы.
Что же до ассемблера 8080 и 8086, то существовал транслятор из текстов 8080 в текст 8086, распространявшийся непосредственно Интелом.
Мне нужно было бинарный код эмулировать, а не текст на ассемблере.
Но Z80 - дело другое, и эмулированный процессор находился в памяти, а не в регистрах х86.
А что мешает регистры z80 в регистры 386 процессора раскидать? Места достаточно. Впрочем, я тоже регистры хранил в памяти, потому что тот эмулятор для отладки писался, а не ради скорости.
И надо было ещё справляться с графикой, которая у PC и ZX оччень горбатая, и у каждого - по-своему.
Не на столько они горбатые, в любом случае, это всего только битики (а может и целые байтики, я уже не помню таких подробностей) перемещать, и не слишком быстро. В любом случае, это тоже совсем другой уровень.
HDL-симулятор нужен не для того чтобы софт гонять. Задача стоит отладить чип до полной совместимости. А на реальной FPGA скорость будет такая, что мало не покажется. Где-то раз в 70 быстрее оригинала.
no subject
Date: 2013-04-04 06:32 (UTC)no subject
Date: 2013-04-04 06:38 (UTC)no subject
Date: 2013-04-04 06:43 (UTC)Что же до ассемблера 8080 и 8086, то существовал транслятор из текстов 8080 в текст 8086, распространявшийся непосредственно Интелом. Там лишь нескольким командам не было прямой замены, приходилось "корячиться". Но Z80 - дело другое, и эмулированный процессор находился в памяти, а не в регистрах х86. И надо было ещё справляться с графикой, которая у PC и ZX оччень горбатая, и у каждого - по-своему.
no subject
Date: 2013-04-04 07:10 (UTC)Даже два уровня, хотя бог его знает как эмулятор БК сделан, но вообще, у таких процессоров есть железо и микропрограммы.
Что же до ассемблера 8080 и 8086, то существовал транслятор из текстов 8080 в текст 8086, распространявшийся непосредственно Интелом.
Мне нужно было бинарный код эмулировать, а не текст на ассемблере.
Но Z80 - дело другое, и эмулированный процессор находился в памяти, а не в регистрах х86.
А что мешает регистры z80 в регистры 386 процессора раскидать? Места достаточно. Впрочем, я тоже регистры хранил в памяти, потому что тот эмулятор для отладки писался, а не ради скорости.
И надо было ещё справляться с графикой, которая у PC и ZX оччень горбатая, и у каждого - по-своему.
Не на столько они горбатые, в любом случае, это всего только битики (а может и целые байтики, я уже не помню таких подробностей) перемещать, и не слишком быстро. В любом случае, это тоже совсем другой уровень.
no subject
Date: 2013-04-05 07:12 (UTC)no subject
Date: 2013-04-05 06:40 (UTC)no subject
Date: 2013-04-05 07:15 (UTC)