interpreter vs. compiled

Terry Reedy tjreedy at udel.edu
Thu Jul 17 21:47:30 EDT 2008



castironpi wrote:
> On Jul 17, 5:37 pm, I V <ivle... at gmail.com> wrote:
>
> 
> Oh.  How is the stack represented?

As usual, as successive locations in memory.
I have the impression that CPython uses the same stack C does.
While conceptually, CPython may put objects on the stack, I am pretty 
sure it actually stacks references (C pointers) to objects in heap memory.

 > Does it keep track of which stack
> positions (TOS, TOS1, etc.) are in what registers?

I am sure they are not in registers, just normal memory.
The C code that implements bytecodes to act on stack values will use 
registers just like any other C code.  So using registers for the stack 
would get in the way.  Of course, the C code might load pointers on the 
stack into address registers when actually needed.  But this depends on 
the address scheme of a particular processor and how the C code is 
compiled to its object code.

> Does stack manipulation consume processor cycles?

Of course.  For much more, you should peruse the CPython source.




More information about the Python-list mailing list