>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