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