On 18 Jul., 01:15, castironpi <[EMAIL PROTECTED]> wrote: > On Jul 17, 5:37 pm, I V <[EMAIL PROTECTED]> wrote: > > > > > On Thu, 17 Jul 2008 15:08:17 -0700, castironpi wrote: > > > The Python disassembly is baffling though. > > > >>>> y= 3 > > >>>> dis.dis('x=y+1') > > > You can't disassemble strings of python source (well, you can, but, as > > you've seen, the results are not meaningful). You need to compile the > > source first: > > > >>> code = compile('y=x+1','-', 'single') > > >>> dis.dis(code) > > > 1 0 LOAD_NAME 0 (x) > > 3 LOAD_CONST 0 (1) > > 6 BINARY_ADD > > 7 STORE_NAME 1 (y) > > 10 LOAD_CONST 1 (None) > > 13 RETURN_VALUE > > > You may well find these byte codes more meaningful. Note that there is a > > list of opcodes athttp://docs.python.org/lib/bytecodes.html > > Oh. How is the stack represented?
As a pointer to a pointer of PyObject structs. > Does it keep track of which stack > positions (TOS, TOS1, etc.) are in what registers? Does stack > manipulation consume processor cycles? Python does not store values in registers. It stores locals in arrays and accesses them by position ( you can see the positional index in the disassembly right after the opcode name ) and globals / object attributes in dicts. For more information you might just download the source distribution and look for src/Python/ceval.c. This file contains the main interpreter loop. -- http://mail.python.org/mailman/listinfo/python-list