на z80 тоже есть одна такая асмовская команда - ret
правда, именно для форта применить сложно, оба стека надо делать программными
этот трюк больше для специфического шитого кода (динамическая генерация например)
насчёт (псевдо)фортокомпилятора для z80 у меня была такая задумка
стек параметров - аппаратный стек, причём верхнее число храним в регистре hl
стек возвратов - как-нибудь программно организуем, вызов относительно медленный
то есть схема ради скорости выполнения длинных цепочек примитивов прежде всего
по возможности примитивы не вызывать, а вставлять короткий код напрямую
только процедуры и сложные и длинные примитивы делать через call
(и возможно, в обрамлении вспомогательных коротких команд)
вызываемая процедура с адресом возврата в СП будет разбираться сама
то есть твой пример:компилируется в:Код:2 dup + .а еще хороший оптимизатор сможет верхнее число держать не в hl, а как там по ходу дела получитсяКод:push hl: ld hl,2: push hl: pop de: add hl,de: call DOT - без оптимизации push hl: ld hl,4: call DOT - c максимальной оптимизацией
- - - Добавлено - - -
притом в диалоговом режиме интерпретатора при скорости, больше характерной для компиляторов
- - - Добавлено - - -
я по этой книжке врубался в форт:
http://publ.lib.ru/ARCHIVES/S/SEMENO...nov_Yu.A..html
там есть даже исходники простого интерпретатора для пц