Re[5]: Виртуальные машины / Forth
От: palm mute  
Дата: 25.07.08 09:56
Оценка: 7 (2)
Здравствуйте, voidlizard, Вы писали:

V>Просто у меня сейчас затык, как организовать локальные переменные, имея 128 байт стека (ну в крайнем случае стек можно расширить за счет хипа, конечно),

V>не имея произвольного доступа к индексным регистрам стека, а форт-машина, понятное дело перестанет ей быть, если даст возможность коду рулить
V>указателями стека. Доступ к хипу достаточно дорогой, то есть устраивать "софтварный" (реализованный на самом форте) стек для локальных переменных
V>очень не хочется (хотя и можно)

Первое — последний раз, когда я смотрел на Форт, там были слова для прямого доступа к стеку по смещению от вершины.

Второе — я не копенгаген в компиляторах, потому мой совет, скорее всего, окажется непрактичным, но все же выскажусь:
а) чисто-функциональные программы тривиально компилируются в код для стековой машины (аргументы функций запихиваются в стек, функция их съедает и оставляет на вершине стека результат). Под функциональной чистотой в данном случае понимается только отсутствие мутабельных локальных переменных, глобальные переменные в куче, ввод-вывод и т.д. не запрещены.
б) SSA-преобразование превращает любую процедуру в чисто-функциональную.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.