>The last nice source of ideas I found is Lua virtual machine. In Lua 
>5.0, VM was rewritten from stack based machine to register-based 
>machine. This increased performance about 20%. Instead of:
>PUSHLOCAL 1
>PUSHLOCAL 2
>ADD
>POPLOCAL 3
>they use:
>ADD 3 1 2


 

Parrot code (VM for Perl 6) also use register-based virtual machine. 
http://www.parrot.org/

 

see the next two paragraphs

 

--- quote

Registers and fundamental data types
The Parrot VM is register based. This means that, like a hardware CPU, it has a 
number of fast-access units of storage called registers. There are 4 types of 
register in Parrot: integers (I), numbers (N), strings (S) and PMCs (P). There 
are N of each of these, named I0,I1,..N0.., etc. Integer registers are the same 
size as a word on the machine Parrot is running on and number registers also 
map to a native floating point type. The amount of registers needed is 
determined per subroutine at compile-time.

 
PMCs
PMC stands for Polymorphic Container. PMCs represent any complex data structure 
or type, including aggregate data types (arrays, hash tables, etc). A PMC can 
implement its own behavior for arithmetic, logical and string operations 
performed on it, allowing for language-specific behavior to be introduced. PMCs 
can be built in to the Parrot executable or dynamically loaded when they are 
needed.

 

--- end quote

 

Maybe you or Przemek find some ideas to apply to Harbour

 

Alejandro

_________________________________________________________________
Show them the way! Add maps and directions to your party invites. 
http://www.microsoft.com/windows/windowslive/products/events.aspx
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to