Victor__v писал(а):
Осталось придумать где такое прототипирование будет наиболее актуальным.
Очень удобная штука, просто чтобы не заниматься отслеживанием стековых перестановок. Полная аналогия локальных объявлений (не только переменных), с единственным ограничением - рекурсия не будет создавать новый набор локальных переменных, поэтому не поддерживается. Но это как-то ни разу не мешало.
Victor__v писал(а):
в x86 под 64 бита стек 64-битный и ничего с этим не поделать. Стек данных я у себя тоже сделал 64-битным.
Эмулированный стек - это массив в памяти. Он может быть char, int, int64_t, и какой угодно еще. Сейчас для эмуляции нет смысла рассматривать программы больше 4 Гб размером, поэтому 32 разряда для адреса вполне достаточно. Соответственно, стек возвратов может хранить 32 разряда. Как с этим работает процессор на уровне машинного кода - второй вопрос. Особенно интересно это для переносимого Qt, под который можно собрать ВМ и для 32-разрядного ARM, и тут таскать лишние разряды совершенно не к месту.
В целом манипуляции со стеком возвратов видятся методически неправильными. Да, про это было в ранних волнах публикаций по Форту, особенно чтобы подчеркнуть, что стек возвратов и стек данных - не одно и то же, и в Форте "все можно сделать". Но с тем же успехом данные можно складывать в HERE, рассчитывая, что их пока там никто не испортит, а потом заберем. Это тоже хак, основанный на знании нюансов поведения транслятора. Оно не стоит того, чтобы вокруг этого выстраивать примеры кода, шаблоны и продолжать это все развивать и поддерживать.