2010-11-10 3 views
4

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

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

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

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

+0

Вы не найдете более чистого и более легкого для чтения фрагмента кода, чем интерпретатор CPython. Just look at it. – novalis

+0

@novalis: исходный репозиторий Python переместился на http://hg.python.org/cpython/ –

ответ

3

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

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

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

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

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

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

9

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

1

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

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

2

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