если на то пошло — ZXNet «code.zx»

если на то пошло

ZXNet echo conference «code.zx»



from: Valery Grigoriev
to: All
date: 20 November 2005
Hello, All то указанные способы подразумевают "взаимодействие" программы загруженной и парсера, работающего в ПЗУ. посмотрите на http://zxdocs.fatal.ru/coding/module.zip - там уже очень замечательно решён этот вопрос, в принципе с небольшими модификациями можно этот же метод считать оптимальным. Вообще, моё глубокое убеждение состоит в том, что глупо реализовывать парсинг вызова в ходе работы самой программы - при загрузке программы всё равно тратится ОЧЕHЬ много процессорного времени и препроцессинг тела программы незначительно увеличит это время (загрузка одного сектора в 256 байт длится около 20-30 тысяч тактов, а среднестатистическая программа-утилита занимает секторов 5-6, игрушки и демки в разы больше; процесс настройки прямых вызовов рутин из ПЗУ жрёт качественно меньше тактов - скорей всего уложится в одно прерывание), однако отсутствие парсера в процессе ВЫПОЛHЕHИЯ программы приведёт просто к качественному ускорению РАБОТЫ кода. Hапример, взять программы умножения двух однобайтовых чисел. Сама программа занимает около 500 тактов. А парсер 200. Получается что из всего времени выполнения тратится около 40% времени на определение адреса п/п вызова???? И это каждый вызов!!! Именно поэтому все фирменные игрушки пользовали либо прямые вызовы ПЗУ (напрямую Call <ПЗУ>) либо вообще свои собственные программы, которые точно известно где находятся.