Как оптимизировать простой стек-машинный код?
Я играл с простым основанным на стеке языком, и одна из вещей, которые я неоднократно обнаруживал, это ручная оптимизация кусков кода.
Я подумал: "Эй, это очень похоже на то, что может сделать компьютер! Повторяющаяся работа с ясной целью и семантикой". Но, оглядываясь по сторонам, я ничего не могу найти по оптимизации стекового машинного кода. Зарегистрировать машины, да. Но не стековые языки. Похоже, что общий ответ на вопрос "Как оптимизировать машинный код стека?" это "не".
Итак, как можно оптимизировать машинный код стека? Существуют ли какие-либо общие методы помимо простых глазковых оптимизаций? Существуют ли какие-либо методы автоматической генерации глазковых оптимизаций?
1 ответ
1 Wikipedia - Stack Machine перечисляет некоторые стековые машины и языки на основе стеков (которые могут как-то решить проблему оптимизации)
1.1 мое прочтение различных ссылок привело меня к выводу, что основанные на стеке машины являются лишь теоретическим инструментом. Нет необходимости "оптимизировать" их, так как для запуска программы такие машины преобразуют код на основе стека в код на основе регистров, оптимизируют его и запускают на оборудовании на основе регистров. Этот процесс обычно называется компиляцией Just In Time (JIT) или компиляцией Ahead Of Time (AOT)
2 из перечисленных вариантов Википедия - FORTH описывает>40-летний широко распространенный язык программирования на основе стеков (должно быть доступно несколько материалов, связанных с оптимизацией)
3 Поиск в Google по запросу "оптимизация четвертого стека" дает множество статей, например:
- Процессор J1 Forth, http://www.excamera.com/sphinx/fpga-j1.html
- Предварительное исследование создания оптимизированного стека, http://users.ece.cmu.edu/~koopman/stack_compiler/stack_co.html
- Оптимизация стека - доктор Питер Дж. Кнаггс, http://www.rigwit.co.uk/thesis/chap-5.pdf
- Разработка и внедрение эффективной машины для штабелирования, http://www.jopdesign.com/doc/stack.pdf
- ...