Pull to refresh
1
0
Send message

Пишем простую виртуальную машину на Python

Reading time 4 min
Views 35K
Привет! Сейчас расскажу как написать простую виртуальную машину на Python. Надеюсь кто-то найдет эту статью интересной.

Мы не будем реализовывать парсер и компилятор, а сделаем пока что только машину-интерпретатор нашего ассемблера.

У нас будет стековая машина, и она будет использовать два стека:
  • стек значений, куда будут складываться/забираться временные значения вычислений и результаты вызова функций
  • стек вызовов, куда мы будем запоминать, в какое место кода нужно вернуться после завершения функции

Сам код будет представлять собой list из команд, которые тоже являются list'ами:
code = [
  ['val', 2], # положить 2 на стек
  ['val', 3], # положить 3 на стек
  ['get', '*'], # положить на стек значение переменной с названием * (функция умножения)
  ['call', 2], # взять с вершины стека функцию и вызвать ее с 2 аргументами со стека (они тоже вынимаются), результат функции кладется на стек
  ['get', 'puts'], # положить функцию печати
  ['call', 1], # напечатать
]

Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Comments 5

Первые шаги хостинга

Reading time 4 min
Views 16K
Есть категория людей, которых манит всё старое и позабытое: бабушкин чердак, дедушкин гараж, здания, в которых когда-то кипела жизнь, а сейчас лишь обрывки истории. И вот недавно мне стало любопытно заглянуть в самые ранние этапы истории веб-хостинга. Эта статья вкратце рассказывает в картинках о тех страничках истории, о которых представители молодого поколения вроде меня, скорее всего, знают мало либо ничего не знают вообще.
Читать дальше →
Total votes 37: ↑31 and ↓6 +25
Comments 8

Information

Rating
Does not participate
Registered
Activity