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-ы отрабатываются компилятором. Это несколько как раз увеличило
размер, но зато дало поддержать гораздо больше режимов.




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

Похожие статьи:
DIY - Схема защиты компьютера от перенапряжения.
Реклама - реклама и обьявления в Запорожье.
Перекресток драконов - Создаём Адвентюру. Обзор редакторов.
Амига - Описание AMIGA 500/2000 - Амига из нутри: клавиатура, дисководы, разъемы ввода/вывода. Что еще можно подключить?
Oт редакции - У газеты нет больше бессменного редактора - ушел на PC.

В этот день...   29 апреля