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


Reply via email to