Galkov писал(а):
посмотреть промежуточную (категорически незаконченную) версиюПосмотрел. На мой взгляд - очередная попытка сделать из HiAsm "объектный HiAsm". Говоря, что каждый компонент есть объект, мы делаем шаг в сторону от эффективной кодогенерации. Возьмём к примеру описанный в данном документе VirtualObject и задумаемся о его реализации. Реализация левых точек вполне логично превратится в вызовы методов объекта, которым передаются данные из потока. Но поскольку эти методы должны активировать верхние и правые точки именно этого VirtualObject, методам должен передаваться ещё и указатель на интерфейс, представляющий из себя набор верхних и правых точек данного VirtualObject. В результате - одни виртуальные вызовы CALL и ни одной inline подстановки.
Мне кажется, нужно разделить компоненты на компоненты-объекты, позволяющие выделять сущности, и компоненты-не-объекты, позволяющие делать эффективный код посредством inline. Хаб, как элементарный компонент - типичный пример компонента-не-объекта, который просто обязан быть inline. Указатель на него вообще не имеет смысла. Это просто последовательность действий с одинаковым аргументом.
Дальнейшие мысли выскажу после повторного более внимательного прочтения.