Конечно наверное это не очень
ZXNet echo conference «code.zx»
from: Valery Grigoriev
to: All
date: 20 November 2005
Hello, GriV
эффективно (в смысле затрат памяти) - использовать символьные имена для работы
с п/п ПЗУ :D (я бы даже более сказал :D) однако имеет право на жизнь хотя бы
потому, что такие функции никогда не перекроют друг друга.
Hапример:
call PrintChar
А если взять безликий
RST 16
defb 81
defb 12
то тому, кто будет писать такую п/п будет необходимо будет держать в руках
справочник чтобы смотреть соответствие между вызываемой функцией и её байтами
описателями (те самые defb) - такую работу должен выполнять не программист, а
машина.
Да и запомнить символьное имя PrintChar в любом случае проще.
Кроме того, символьные имена хорошо жмутся (5 бит используют из 8, если даже
взять спецсимволы то 6 бит из 8, или скажем обработать хаффманом), так что
трёхсимвольное имя будет кушать практически столько же места сколько вызов
через DefB.
P.S. Под перекрытием я подразумеваю возможность вызова разных функций при том
же синтаксисе - PrintChar либо не оттранслируется вообще, потому что нет такой
функции, либо будет транслироваться замечательно. Rst Defb Defb при смене
набора функций придётся отслеживать. Первый Defb отвечает за группу функций -
если после обновления версии случилось так что группа расширилась за 256
значений функций, то придётся ещё один номер группы резервировать и это в свою
очередь головняк и головняк
|