compiling to python byte codes

Jason Lai jmlai at uci.edu
Fri Sep 3 00:14:00 EDT 2004


Maurice LING wrote:
> 
> Some parts of MA is still undergoing development and cleaning up but I 
> certainly do not see why any opcode should cross multiple lines. As far 
> as I can see, 70% of the opcodes are able to be represented by multiple 
> lines of python codes. I've not thought hard enough on this yet.
> 
> All I can say is that MA looks similar to any assembly is structure, 
> with directives.

Well, x86/PPC assembly operates on registers. Python uses a stack.
See http://docs.python.org/lib/bytecodes.html

If you're using registers, I guess you'd have to store the values in 
variables, and load/store them through the stack whenever you do an 
operation -- maybe with some optimization if you can keep the result on 
the stack.

Python pretty much only lets you run a block of code at once (using exec 
or eval). So if you compile it line by line on the fly, your VM would 
have to ask Python to run each line, and take care of unstructured jumps 
itself. Python doesn't really like arbitrary gotos anyway. I assume if 
you were translating to Python code, you'd have to have the whole block 
for if, while, etc, ahead of time. Or only jump backwards, since you 
can't jump to something that hasn't been written yet.

  - Jason



More information about the Python-list mailing list