Implementing my own Python interpreter
Ognjen Bezanov
Ognjen at mailshack.com
Mon Oct 13 19:07:27 EDT 2008
Grant Edwards wrote:
> On 2008-10-13, Ognjen Bezanov <Ognjen at mailshack.com> wrote:
>
>> I am a third year computer science student and I'm the process of
>> selection for my final year project.
>>
>> One option that was thought up was the idea of implement my
>> own version of the python interpreter (I'm referring to
>> CPython here). Either as a process running on another OS or as
>> a process running directly on the CPU.
>>
>> Now, I can't seem to find a decent source of information on
>> the python interpreter.
>
> You mean the virtual machine?
Yes, I presume there is a CPU implementation that executes the byte
code, but that is pretty much the limit of my knowlede
>
>> I have made the assumption that Python works very much like
>> Java, you have code that is compiled into bytecode, which is
>> then executed in a virtual machine. IS this correct?
>
> Yes. There are python compilers that generate bytecode for a
> variety of VMs:
>
> * CPython -- Python Virtual Machine (PVM)
> * Jython -- Java Virtual Machine (JVM)
> * Iron Python -- .Net Virtual Machine
>
>> Is there a good source to give me an overview of Python
>> internals? (I can look at the code, but I would find it easier
>> to understand if I can see the "big picture" as well)
>
> The internals of what? One of the compilers? The PVM?
Well, how does python execute code (note, when I talk about "Python", I
mean the CPython implementation)? I know that for C we first compile
into into assembly, then assemble that into machine code. What is the
process for Python? I assume:
Python code ---[compile]--> Python bytecode ---[execute on Virtual
machine]--> machine code.
But I'm not sure.
>
>> Also, any pro's out there willing to chime on the feasibility
>> of implementing python to run directly on the hardware
>> (without an underlying OS)? I don't expect 100% compatibility,
>> but would the basics (branching, looping, arithmatic) be
>> feasible?
>
> I would think so.
>
> Without any file, terminal, or network I/O, I don't see how
> you'll be able to do anything useful...
>
Well, It is more of a academic task, I don't think I will end up with a
groundbreaking python implementation or anything like that, but it would
be interesting (and a learning experience for me).
I would probably implement some simple I/O (so keyboard input and
character output to screen) as part of the implementation.
More information about the Python-list
mailing list