All documentation is in html format and should be on the minime/sourceforge.net site (once I figure this out).
As a minimum, read Research Goals, Game Plan. These are both short.
Then, read MiniMe Functions to get an idea of what kind of craziness is in store with MiniMe's view of functions. And Function Values.
Finally, read Memory Management. This presents the "little heaps within the big heap" idea that the internal implementation of the language is based on. This will affect much of the next steps in the development of MiniMe.
MiniMe is currently running on linux. It stands a good chance of running as is on any unix (needs flex and bison). It would need some work to port to Windows or Macs, but shouldn't be too bad because it has no GUI.
Finally, some of the html documents have links to the header files. These aren't going to work from the minime/sourceforge.net site, but should work if you load the pages from the Doc directory in the cvs repository.
After checking out the 'minime' cvs repository, create a directory called 'Objd' in the top-level directory. Then all that should be necessary is to run "make minime" in the top-level project directory. Make will complain that the file, Make.rules, is not present but it then creates it and continues on. This should create the program "minime" in the top-level project directory.
So far, the resultant program is set up for testing and is not in final form.
To facilitate testing, minime can be run in one of three ways:
minime (no arguments) | reads objects from stdin and prints them to stdout. This is used to test the reader and object print functions. You must type a semicolon (;) after each object. |
minime bytecode_file... | Calls the function defined in the bytecode file, with no arguments, and prints the result. |
minime -a asm_file... | Assembles the asm_files into bytecode files. |
There are 5 sets of tests that have been developed and run against the C++ code.
The first test was the reader/printer testing. This was done by hand and was not put into a script form. Execute minime with no arguments and type different object syntaxes followed by a semicolon. After reading the object in, it is printed back out.
The second test was done by memtest. Generate this with "make memtest" in the top-level directory. Then run the resulting "memtest" program with no arguments. It allocates some objects and runs the garbage collector to test garbage collection. I haven't saved the output of this program, it's pretty cryptic.
The third test was done by typetest. Generate this with "make typetest" in the top-level directory. It takes an optional '-f' argument to bypass the file tests (which require user input). It generates a bunch of error messages (testing error situations). Save stderr to a file and compare with typetest.err. This does low-level testing on the various fundamental data type objects (in the 'types' directory).
The fourth test is to run test/bc/script from the top-level directory. This tests the bytecode interpretor. It should just print out "All tests passed".
The fifth test is to run test/asm/script from the top-level directory. This tests the assembler. It should print out about a dozen lines ending with "All tests passed".