байт-код python, интерпретатор и виртуальная машина - PullRequest
5 голосов
/ 10 ноября 2010

Это действительно обширный вопрос, и я в основном ищу ресурсы, где я могу узнать больше о следующем:

Я знаю, что интерпретатор python написан на C и создает байт-код для запуска на pythonВиртуальная машина также написана на C (верно?).Мой вопрос: возможно ли реализовать оба из них в самом Python?Я предполагаю, что с этой технической возможностью я могу написать что-то вроде OS на Python, особенно БЕЗ статической компиляции чего-либо?

Если я правильно понимаю, у Python нет ассемблера, которыйдолжны быть написаны также на Python.Являются ли эти вещи чем-то, что технически (возможно?) Может быть сделано?Или динамическая типизация python создаст какую-то проблему?

Я немного знаю об архитектуре микропроцессора, сборке и машинном коде, что недавний выпускник EE изучает в школе.Но я заблудился, глядя на картину в целом для языков более высокого уровня, таких как python.

Ответы [ 4 ]

9 голосов
/ 10 ноября 2010

Компилятор, а не интерпретатор. Но вы ищете PyPy .

3 голосов
/ 09 апреля 2012

Сначала вам нужно написать компилятор Python (не интерпретатор) на любом языке, предпочтительно Python. Первый запуск компилятора должен быть выполнен через интерпретатор.

Затем вы скомпилируете свой компилятор с самим собой, что приведет к созданию собственного компилятора, который не требует интерпретатора.

Затем вы можете использовать компилятор для компиляции любого Python в нативный код.

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

Подробнее об этом процессе можно прочитать здесь: http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

Что касается создания операционной системы, вам потребуется реализовать, как минимум, интерпретатор Python, если вы хотите избежать скомпилированного кода. Если вы напишите интерпретатор Python как микроядро, вы можете написать остальную часть операционной системы на Python. (Правка: я просто случайно описал Клиз, о котором упоминал Джиаро:))

2 голосов
/ 09 апреля 2012

Джеймс Таубер (James Tauber) также создал в Python доказательство концепции ОС под названием Cleese и недавно начал работу над тем, чтобы заставить его работать на Pypy (интерпретатор python, написанный на python)

1 голос
/ 10 ноября 2010

Что касается вопроса реализации ОС, вам необходим язык системного программирования для реализации ОС.Делать все это на чистом Python будет невозможно, если вы не сможете придумать Python-ассемблер и преобразовать Python в исполняемые файлы с прямым исполнением без виртуальной машины.

Если вы хотите написать код на ассемблере и заставить Python собрать его для васВзгляните на слегка устаревший и экспериментальный pyasm .

...