байт-код python, интерпретатор и виртуальная машина

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

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

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

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


person Falmarri    schedule 10.11.2010    source источник
comment
Вы не найдете более чистого и легко читаемого фрагмента кода, чем интерпретатор CPython. ‹a href=svn.python. org/view/python/trunk/Python/ посмотрите на него‹/a›.   -  person novalis    schedule 10.11.2010
comment
@novalis: исходный репозиторий Python перемещен в hg.python.org/cpython.   -  person Fred Foo    schedule 09.04.2012


Ответы (4)


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

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

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

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

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

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

person Kendall Frey    schedule 09.04.2012

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

person Ignacio Vazquez-Abrams    schedule 10.11.2010

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

person Jiaaro    schedule 09.04.2012

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

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

person whatnick    schedule 10.11.2010