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? Does it keep track of which stack positions (TOS, TOS1, etc.) are in what registers? Does stack manipulation consume processor cycles? Here is what I'm thinking: LOAD_NAME: stack= [ x ] reg0: x tos: reg0 LOAD_CONST: stack= [ 1, x ] reg0: x reg1: 1 tos: reg1 BINARY_ADD: stack= [ x+ 1, x ] reg0: x reg1: x+ 1 tos: reg1 STORE_NAME: y= [ x+ 1], stack= same reg0: x reg1: x+ 1 tos: reg1 I may be totally off. -- http://mail.python.org/mailman/listinfo/python-list