On 10/01/2018 23:31, Lawrence D’Oliveiro wrote:
On Thursday, January 11, 2018 at 1:08:25 AM UTC+13, bartc wrote:

But I'm not convinced that register-based is necessarily faster.

Not if your code is dominated by memory accesses, as a dynamic language is 
likely to be. But ask the people who design machine architectures, and who 
write compilers for them for languages like C--they’ll tell you it makes a 
helluva difference.


I'm not sure what you mean here. The subject is byte-code interpreters not statically compiled languages running native code, which are obviously better off using real hardware registers.

The 'registers' in this example - for actual byte-code execution not what happens in pypy and LuaJIT - don't appear to be actual hardware registers. They can't be when an implementation is 100% high level code.

They are just a different scheme to address instruction operands stored in memory, which can offer some advantages, with a few downsides.


(I've been writing byte-code interpreters for stack-based VMs for years. I've never had much luck moving away from that model.

At the moment they generally run the same algorithms a bit faster than register-based Lua, but can also be trivially accelerated to be several times faster, while still executing sequential byte-code.

Not as fast as LuaJIT, but what goes on in that is beyond the methods discussed here for CPython and such.)


--
bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to