Для справки: Burroughs B5000 и Inmos Transputer были стековыми машинами. DEC PDP11 имел такие гибкие режимы адресации, что его можно было использовать в качестве стекового компьютера.Я думаю, что Лилит Никлауса Вирта , возможно, была стековой машиной (более 20 лет назад, мой разум ускользает: -)
У них действительно не было никакого регистрационного имени / номера в инструкциях кнайти операнды, потому что они были в стеке.
Инструкции могут загружать немедленные (постоянные) значения в стек или загружать / сохранять в памяти.
Так что их не было add.w r0, r1, r5
или add.w eax, [#fe34]
.Было add.w
.
Так что пример (не совсем точный, он был более сложный) последовательности ассемблера может быть
loadstack 0xfe34 -- got fe34 onto stack
loadstackindirect -- use address on the stack, to load the value at that address
add.w -- assumes we already have the other operand on the stack
-- result back onto the stack
Для вычисления и загрузки значения в массивстек может быть использован, потому что может отсутствовать индексированный режим адресации.
Таким образом, инструкции были небольшими, и много работы выполнялось неявно с указателем стека и стека.На самом деле IIRC Transputers имел стек только из трех значений, и компилятор (или разработчики) должен был обеспечить его поддержание.
XMOS теперь продают современный «эквивалент» и нанимают некоторых из тех же людей.
Прошло более 20 лет с тех пор, как я написал Transputer code, поэтому извините за немного расплывчатость.
В системе UCSD Pascal использовалась виртуальная машина, определяемая программным обеспечением, которая быластековая машина.Идея заключалась в том, чтобы сделать что-то переносимое на новые компьютеры, но также простое в написании, легко компилируемом и разумном исполнении.Эта виртуальная машина была определена на собственном диалекте Паскаля.Когда он был перенесен на реальные компьютеры, регистры использовались для хранения указателя стека и, вероятно, для некоторой изобретательности в обработке вершины стека (с помощью регистров), чтобы получить разумную производительность.