All --
I Just committed the following changes. Enjoy.
* New stack functions push_entry(), pop_entry() and swap_entry().
The first two exist for the support of the last one. These
functions don't care what is in the stack entries. These exist
to support the new 'swap' op (see next bullet).
* New op 'swap' for swapping the top two elements on the stack.
This is necessary for passing arguments to functions, since
the return address will be on top of any arguments that have
been pushed on the stack. This way, you can use a (swap, pop)
pair to retrieve each argument (for subroutine linkage).
* Disassembler now prints numbers in decimal by default, with
a new '-x' flag to turn on hexadecimal display. Since other
members of the Parrot Tool Set use decimal by default, this
makes it easier to compare output from the various tools.
* Jako compiler has more explanatory comments and the following
new features:
* Lexically scoped variables.
* Subroutines that take arguments and return values:
sub int foo(int bar) {
if (bar == 1) {
return 42;
} else {
return 13;
}
}
* ... if (...) and ... unless (...) statement modifiers
can be used on next, last and redo.
* Bitwise and (&, &=) and or (|, |=) ops.
* Type names are just 'int', 'num', 'str', and 'poly' now.
The old long names 'integer', 'number', 'string', and
'polytype' are no longer valid.
* Integer variable assignments can now use 0b (binary),
0 (octal) and 0x (hexadecimal) radix prefixes on literals.
* New Jako and Parrot assembly examples queens.{jako,pasm} for
solving the eight-queens problem. The assembly example is a
hand-modified version of the assembly code produced by the
Jako compiler from queens.jako. A few unnecessary ops have
been removed, lots of unnecessary labels have been removed,
and all the Jako soure code comments have been removed.
* Makefile and .cvsignore in languages/jako modified so that
the assembler produces listings when assembling the programs,
yet the *.list files are ignored by CVS.
* Made the default target in languages/jako/Makefile 'all'.
* Modified some of the Jako examples to use some of the new
features of Jako, such as subroutines and lexical variable
scoping.
Regards,
-- Gregor