ZXNet эхоконференция «zxnet.pc»


тема: Как сократить код эмулятора Z80 на PC



от: Владимир Кладов
кому: All
дата: 14 Jan 2006
Hello, Vladimir Kladov Первый этап закончил: эмулятор байт-кода есть, генерация П-кода и компиляция П-кода в байт-код есть. Уменьшил размер экзешника на 100К (сжатый уменьшился на 21К всего. Hемного, но и исходного кода, для которого генерится П-код на автомате, тоже не очень-то много). Байт-код получился в 2 раза компактнее такого же машинного. Замедление скорости на глаз неразличимо (тем более что заменяется код инициализации диалогов). Следующим ходом попробую сделать компилятор Паскаль->П-код, и тогда можно будет сжать весь паскаль-код, который не требует высокого быстродействия.

от: Александр Макеев
кому: All
дата: 01 Feb 2006
Hello, Vladimir Kladov Vla> Первый этап закончил: эмулятор байт-кода есть, генерация П-кода и Vla> компиляция П-кода в байт-код есть. Уменьшил размер экзешника на 100К Vla> (сжатый уменьшился на 21К всего. Hемного, но и исходного кода, для Vla> которого генерится П-код на автомате, тоже не очень-то много). Vla> Байт-код получился в 2 раза компактнее такого же машинного. Vla> Замедление скорости на глаз неразличимо (тем более что заменяется код Vla> инициализации диалогов). Следующим ходом попробую сделать компилятор Vla> Паскаль->П-код, и тогда можно будет сжать весь паскаль-код, который Vla> не требует высокого быстродействия. Идея конечно интересная, если я правильно понял ты хочешь сделать JIT компилятор псевдоязыка, на котором описывается логика обработки инструкций Z80, верно? правда я уже успел полюбить .net, где подход с JIT компиляцией не так прост и может вылится в еще больший код... :) впрочем чистый код полного эмулятора Z80, включая и дизассемблер на IL у меня занимает 73 кб (в архиве 13,5 кб), что на мой взгляд не так и много... но я всетаки хочу переписать его в некую форму микрокода, где базовые операции строятся на основе машинных циклов Z80... может чтото и получится...

от: Владимир Кладов
кому: All
дата: 01 Feb 2006
Hello, Alexander Makeev нет, я отказался от этой идеи. Вместо этого я сделал эмулятор байт-кода "вообще". Полезнее для уменьшения размеров не только одной этой программы эмулятора, но и кучи других. .net это когда софт уже (почти) есть, а железо, которое его может принять, еще пока дорого. Так что я не тороплюсь. Кроме того, это надо юзеру ставить runtime-библиотеки от .net, а вот надо ли это ему.

от: Владимир Кладов
кому: All
дата: 01 Feb 2006
Hello, Vladimir Kladov и про JIT: как я понимаю, это совсем не то, потому что мой байт-код эмулируется, а не транслируется перед выполнением. Свой JIT я сделал еще раньше в эмуляторе, и как раз для увеличения скорости, и это как раз встроенный в эмулятор макро-компилятор PC-Asm, который компилирует в память в зависимости от опций, и у меня получается максимально быстрый код для эмуляции Z80 во всех сочетаниях режимов и для вывода графики. И без всяких (почти if-ов внутри, потому что if-ы отрабатываются компилятором. Это несколько как раз увеличило размер, но зато дало поддержать гораздо больше режимов.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
real life - mr.pi: freeman и бабы.что делать?
Реклама - Реклама и объявления ...
Ассемблер - Круги на воде: Алгоритмы имитации эффекта известного на других платформах, под названием "круги на воде".
От нас - очередные несколько слов от авторов.
Системы и сети - Ekaterinburg, Areas list, Расписание станций, Сетевой софт, Терминология, Рулесы.

В этот день...   8 мая