2005-01-27 Benoît Perrot Make LabelExp independent from Label. * src/inst/exp.hh, src/inst/exp.cc: Make LabelExp aggregate a unique_string instead of a Label. * dev/parse-asm-scan-gen.py: Return a unique_string when scanning an identifier (instead of a Label). * dev/parse-asm-parse-gen.py: Update accordingly. * src/inst/section.hh (has_label, get_offset): Wait for a unique_string (instead of a Label). * dev/inst-builder-gen.py, dev/inst-solver-gen.py, * src/vm/virtual_machine.cc, src/shell/shell.cc: Update accordingly. 2005-01-26 Benoît Perrot Let concrete sections choose how to handle labels definitions. * src/inst/section.hh (add_label): Rename as `register_label'. * src/inst/data_section.hh, src/inst/text_section.hh: (add_label): Rename as... (define_label): This, and make it wait for a unique_string and build the label. * dev/parse-asm-scan-gen.py: Return a unique_string on a label definition. * dev/parse-asm-parse-gen.py: Update accordingly. 2005-01-23 Benoît Perrot Copy the instruction list of text section when storing one. * src/inst/text_section.hh, dev/inst-solver-gen.py: Hide the concrete type of instruction list. * src/vm/mmu.hh: Aggregate the instructions instead of a text section. (inst_store) Copy the instruction pointers into a local vector. (inst_load) Access the local vector instead of text section. 2005-01-23 Benoît Perrot Hide the text section loaded in virtual machine's memory. * src/vm/mmu.hh (inst_has_label, inst_get_offset): Remove. * src/vm/virtual_machine.hh (has_label, get_offset): Remove. (add_breakpoint) Wait for an offset instead of a label. * src/vm/virtual_machine.cc: Update accordingly, move label translation into... * src/shell/shell.cc (do_break): ...this method. 2005-01-23 Benoît Perrot Introduce some (weak) reentrancy into lexer. * dev/parse-asm-scan-gen.py: Maintain a stack of scanning states. This comes from the LRDE's Tiger Compiler's scanner. 2005-01-22 Benoît Perrot Fix shell's `load' command. * src/shell.hh: Implement destructor in corresponding .cc. Aggregate the program being run. * src/shell.cc (do_load): Recover on parse or solve error. (do_load, do_run, do_continue, do-next, do_break) Use aggregated program pointer instead of global one. 2005-01-17 Benoît Perrot * src/shell.hh (is_register, is_label, get_next_word): Rename and move into... * src/shell.cc (eat_register, eat_label, eat_word): This. 2005-01-15 Benoît Perrot Introduce utilities for lexical analysis. * src/misc/lexutils.hh, src/misc/lexutils.cc: Pack utilities for lexical analysis in these files. * src/misc/Makefile.am: Update accordingly. * src/shell/shell.hh, src/shell/shell.cc: Use lexutils. 2005-01-15 Benoît Perrot Improve command identifiers recognition. * src/shell/cmd.hh: Rename (cmd_type_type, cmd_type_, get_type) as (identifier_type, id_, get_identifier) for readability. * src/shell/shell.hh (eat_word): Rename as (eat_command_id) and move its implementation into... * src/shell/shell.cc: This file. Recognize uncomplete command identifiers and warn on ambiguity. Factor `build_cmd'. 2005-01-14 Benoît Perrot Introduce unique_strings. * src/misc/unique_string.hh, src/misc/unique_string.cc: Declare and define the string uniquifier. * src/misc/test-unique_string.cc: Test it. * src/misc/Makefile.am: Update accordingly. * src/Makefile.am: Link with libmisc.a. * src/inst/section.hh, src/inst/label.hh: Use misc::unique_string instead of std::string. * src/inst/label.cc: Empty it. 2005-01-08 Benoît Perrot Migrate to bison2.0a. * dev/parse-asm-parse-gen.py: Call the parser with a filename and a program builder instead of using global variables. Use bison's builtin system to print token values. Remove global program builder. * dev/parse-asm-scan-gen.py: Remove global string for file name. Use yy::location instead of yy::Location. * src/parse/asm-scan.hh: Call the scanner with a trace flag. * src/parse/libparse.hh, src/parse/libparse.cc: Declare trace flags as booleans. * src/vm/cp0.hh: Include common.hh to get exit_set. 2005-01-04 Benoît Perrot Strengthen lexical analysis. * dev/parse-asm-scan-gen.py: Complain when a lexicaly correct integer cannot be converted by istringstream, for example when the said integer is too large. For hexadecimal integers, a maximal number of digits might be used, but it seems more generic to handle it through istringstream; never knowns, someday nolimips may have to support 64 or event 128 bits long integers :). Call step() each time an invalid character is detected, to have a more clever error message. Step only one line when an eol sequence is detected. * tests/lexical/invalid-characters.s, integer-too-large.s: New. * tests/lexical/Makefile.am: Update accordingly. 2004-12-18 Benoît Perrot Kill (some) autotools warnings. Some m4 files from GNUlib still use deprecated autotools constructions. * src/vm/Makefile.am, src/misc/Makefile.am, * src/task/Makefile.am, src/shell/Makefile.am, * src/parse/Makefile.am, src/inst/Makefile.am, * src/Makefile.am: Use *_CPPFLAGS instead of obsoleted INCLUDES. * configure.ac: Run autoupdate. 2004-12-18 Benoît Perrot Move tasks to top level, to make libraries "side-effect free". * src/task/task-tasks.hh, src/task/task-tasks.cc, * src/parse/parse-tasks.hh, src/parse/parse-tasks.cc * src/inst/inst-tasks.hh, src/inst/inst-tasks.cc * src/vm/vm-tasks.hh, src/vm/vm-tasks.cc, * src/shell/shell-tasks.hh, src/shell/shell-tasks.cc: Move to... * src/task-tasks.hh, src/task-tasks.cc, * src/parse-tasks.hh, src/parse-tasks.cc * src/inst-tasks.hh, src/inst-tasks.cc * src/vm-tasks.hh, src/vm-tasks.cc, * src/shell-tasks.hh, src/shell-tasks.cc: These files. * src/task/Makefile.am, * src/parse/Makefile.am, * src/inst/Makefile.am, * src/vm/Makefile.am, * src/shell/Makefile.am, * src/Makefile.am, * src/modules.hh: Update accordingly. 2004-11-28 Benoît Perrot Use GNUlib as it shall be. Thanks to Akim Demaille and Paul Eggert for showing me the right way to do it. * bootstrap: Get gnulib files from CVS repository or local directory (extracted from GNU tar's bootstrap script, written by Paul Eggert and Sergey Poznyakoff). * lib/Makefile.am.tmpl: New. * Makefile.am: Add `lib' as subdirectory. * configure.ac: Use gnulib's automake snippets. * src/stdint_.h, config/stdint.m4, config/inttypes.m4: Remove, as deprecated by the correct use of gnulib. * src/Makefile.am, src/vm/Makefile.am, src/inst/Makefile.am: Update accordingly. 2004-11-02 Benoît Perrot * dev/inst-solver-gen.py: Include config.h to get configuration needed by . 2004-10-31 Benoît Perrot * src/parse/libparse.cc: Use the up-to-date bison parser constructor. make check failed on platforms that have bison1.875e, which generates an error message when the deprecated parser constructor is invoked. 2004-10-31 Benoît Perrot * configure.ac: Check presence. * src/stdint_.h: Use when it is present to define limit macros. A problem occured on our SunOS: includes through several files, leading to a macro definition clash. 2004-10-30 Benoît Perrot * configure.ac: Check isblank presence. * src/shell/shell.hh, src/shell/shell.cc: Provide isblank when the platform lack it. 2004-10-30 Benoît Perrot * src/vm/cpu.cc: Effectively use Cpu::register_type, and not system's register_t. cpu.cc did not compile on SunOS, where register_t is not defined. 2004-10-30 Benoît Perrot * config/stdint.m4, config/inttypes.m4: GNUlib's / detection tools. * configure.ac: Use gl_HAVE_STDINT_H to check / presence. Define __STDC_LIMIT_MACROS to access to some macros that the ISO C99 standard specifies to be explicitly requested in C++ implementation. * src/stdint_.h: GNUlib's "ISO C 99 for platforms that lack it." * src/Makefile.am: Generate stdint.h from stdint_.h on platforms that lack it. * src/vm/cpu.hh, src/vm/memory.hh, src/inst/data_section.hh: Include config.h to get information on / presence. 2004-10-28 Clement Vasseur * dev/parse-asm-scan-gen.py: Add missing header for `errno'. The problem appeared on NetBSD. 2004-10-28 Clement Vasseur Fix problem with case-insensitive filesystems. * distrib/debian/changelog: Rename as... * distrib/debian/changelog-deb: ...this. * distrib/debian/Makefile.am: Adjust. 2004-10-28 Clement Vasseur * bootstrap.sh: Stop at first error (sh -e). Don't use "cd -" because it does not work with BSD's /bin/sh. 2004-10-25 Benoît Perrot Participate to "builddir != srcdir" compilation. * dev/inst-builder-gen.py, * dev/inst-nodes-gen.py, * dev/inst-solver-gen.py, * dev/doc-inst-set-gen.py, * dev/parse-asm-scan-gen.py, * dev/parse-asm-parse-gen.py: Ask for a directory where the files have to be generated. * src/parse/Makefile.am, * src/inst/Makefile.am, * doc/Makefile.am: Specify the directory where to generate. 2004-10-04 Benoît Perrot Use a dedicated script to launch bison to control the directory where the generated files are output. * config/move-if-change, config/bison++: Provided by Akim Demaille. * config/Makefile.am: Distribute them. * src/parse/Makefile.am: Use bison++. 2004-10-03 Benoît Perrot * dev/inst-nodes-mk-gen.py: Split into... * src/inst/Makefile.am: This file. * bootstrap: Ask for nodes.mk generation. 2004-10-03 Benoît Perrot * dev/inst-makefile-gen.py: Move to... * dev/inst-nodes-mk-gen.py: This file. * Makefile.am, boostrap: Propagate. 2004-09-28 Benoît Perrot * src/parse/Makefile.am: Use time stamp trick for bison generated files. 2004-09-28 Benoît Perrot Do not update timestamps of generators when they fail. * src/parse/Makefile.am, dev/inst-makefile-gen.py: Suggested by Akim Demaille: Read Automake.texi :) 2004-09-26 Benoît Perrot Add data storage directives. * dev/parse-asm-scan-gen.py, dev/parse-asm-parse-gen.py: Add `.byte', .half', `.ascii' directives. * dev/inst-builder-gen.py: Implement new directives. * src/inst/data_section.hh: Move `.asciiz' implementation to program_builder.hh. 2004-09-26 Benoît Perrot * src/inst/text_section.cc: Fix label search for program display. 2004-09-26 Benoît Perrot Name sections. * src/inst/section: Add name attribute. * src/inst/text_section.hh, src/inst/data_section.hh: Default it to `.text' for text sections and `.data' for data sections. * src/inst/text_section.cc, src/inst/data_section.cc (print): Display name. 2004-09-20 Benoît Perrot * NEWS: Update 2004-09-20 Benoît Perrot Emulate `lui' * dev/nolimips.xml: Add `lui' instruction. * src/vm/cpu.hh, src/vm/cpu.cc: Emulate `lui'. 2004-09-20 Benoît Perrot Li is not a native instruction * dev/nolimips.xml, src/int/program_builder.cc: Make `li' a pseudo instruction for `addiu'. * src/vm/cpu.hh, src/vm/cpu.cc: Remove emulation of `li'. 2004-09-19 Benoît Perrot Limit access to callee-save and caller-save registers. * dev/inst-solver-gen.py: Check use of callee-save and caller-save registers. * src/inst/inst-tasks.hh, src/inst/inst-tasks.cc: Add coresponding tasks. 2004-09-19 Benoît Perrot Handle options waiting for an integer. * src/task/task.hh, src/task/task.cc: Add a "needs a value" flag. * src/task/task_register.cc: Handle values from command line. * src/task/int_task.hh, src/task/int_task.cc: New files. * src/task/Makefile.am, src/task/libtask.hh: Distribute new files. 2004-09-18 Benoît Perrot Factor boolean tasks. * src/task/boolean_task.hh, src/task/boolean_task.cc: New files. * src/task/Makefile.am: Distribute new files. * src/vm/vm-tasks.hh, src/vm/vm-tasks.cc, * src/task/libtask.hh: Use boolean tasks. 2004-09-18 Benoît Perrot * src/task/task.hh, src/task/task.cc: Split in... * src/task/function_task.hh, src/task/function_task.cc, * src/task/libtask.hh: These new files. * src/task/Makefile.am: Distribute new files. * src/task/task-tasks.hh, src/shell/shell-tasks.hh, * src/parse/parse-tasks.hh, src/nolimips-tasks.hh, * src/inst/inst-tasks.hh, src/vm/vm-tasks.hh: Include libtask.hh instead of task/task.hh 2004-07-18 Benoît Perrot Add the backtrace command to the shell. * src/vm/cpu.hh, src/vm/virtual_machine.hh: Add an accessor to call stack. * src/shell/cmd.hh, src/shell/shell.hh, src/shell/shell.cc: Parse and execute backtrace command. 2004-07-18 Benoît Perrot shell::Cmd is a minimalist AST, shell::Shell is one of its visitor. * src/shell/cmd.hh: Move execution engine to... * src/shell/shell.hh, src/shell/shell.cc: This class. 2004-07-18 Benoît Perrot * src/shell/shell.hh, src/shell.cc: Normalize string stream use. 2004-07-18 Benoît Perrot * src/shell/shell.cc: Move readline wrapper to... * src/misc/readline.hh: This file. * src/misc/Makefile.am: Distribute readline.hh 2004-07-15 Benoît Perrot * tests/runtime/address-load.s, tests/runtime/address-store.s: Test invalid access to memory. * tests/runtime/Makefile.am: Distribute them. 2004-07-15 Benoît Perrot * src/vm/memory.hh, src/vm/mmu.hh, src/vm/virtual_machine.cc: Make the MMU responsible of address translation and exception raising. * src/vm/cp0.hh (raise_addr_load, raise_addr_store): Add address load and store exceptions. * src/vm/virtual_machine.hh (execute): Stop execution on fatal exceptions. 2004-07-14 Benoît Perrot * src/vm/mmu.hh: Hide instructions' access behind MMU. * src/vm/cpu.hh, src/vm/cpu.cc, src/vm/virtual_machine.hh: Use the MMU to access instructions. 2004-07-14 Benoît Perrot * src/vm/memory.hh, src/vm/mmu.hh, src/vm/cpu.cc, * src/vm/virtual_machine.cc: Implement reset() method. * src/vm/virtual_machine.hh, src/vm/virtual_machine.hh: Keep and reload the main offset of loaded program. 2004-07-14 Benoît Perrot * src/vm/virtual_machine.hh: Move the implementation of rarely used methods to... * src/vm/virtual_machine.cc: This file. 2004-07-14 Benoît Perrot * src/shell/shell.cc (readline): When the true readline is lacking, use STL's getline instead of istream::operator>> to get a line instead of a word. Reported by Julien Vanegue. 2004-07-14 Benoît Perrot * INSTALL: Explain --with-readline-{includes,library} usage. Suggested by Marco Tessari. 2004-07-12 Akim Demaille * configure.ac: Bump to 0.7a. 2004-07-08 Benoît Perrot * src/vm/cpu.hh (get_unlimited): Print a lovely error message when an unlimited register is used before initialized. * tests/runtime/Makefile.am, tests/runtime/uninitialized-x.s: Test the case. 2004-06-27 Benoît Perrot Update distribution's files. * TODO, NEWS, INSTALL: Update. 2004-06-27 Benoît Perrot Update test suite machinery. * tests/nolimips-check: Rename PSYFLAGS to NOLFLAGS. * tests/generate-ref.mk: Distribute reference output files. * tests/common.mk, * tests/lexical/Makefile.am, tests/lexical/check-lexical, * tests/runtime/Makefile.am, tests/runtime/check-runtime, * tests/syntax/Makefile.am, tests/syntax/check-syntax, * tests/good/Makefile.am, tests/good/check-good, * tests/solve/Makefile.am, tests/solve/check-solve, * tests/unlimited/Makefile.am, tests/unlimited/check-unlimited, Use automake's TESTS_ENVIRONMENT variable to set Nolimips' flags. 2004-06-25 Benoît Perrot Make Nolimips compile on OS X. * dev/parse-asm-scan.ll: Suggested by Akim Demaille: Prefer istringstream to strtoll. 2004-06-13 Benoît Perrot Update makefile's machinery. * src/parse/Makefile.am, dev/inst-makefile-gen.py: Rename .log files to .stamp files. * src/parse/Makefile.am: Suggested by Akim Demaille: do not put asm-parse.cc in BUILT_SOURCES. 2004-06-13 Benoît Perrot Generate debian package. * distrib/debian/control, * distrib/debian/compat, * distrib/debian/changelog, * distrib/debian/copyright, * distrib/debian/docs, * distrib/debian/rules, * distrib/debian/info: Add debian package control files. * distrib/debian/Makefile.am, distrib/Makefile.am, * Makefile.am, configure.ac: Distribute distrib and distrib/debian subdirectories. 2004-05-29 Benoît Perrot Bump to nolimips-0.7 * INSTALL, README, TODO, * Makefile.am, bootstrap, * configure.ac, * dev/doc-inst-set-gen.py, dev/inst-builder-gen.py, * dev/inst-makefile-gen.py, dev/inst-nodes-gen.py, * dev/inst-solver-gen.py, dev/nolimips.py, * dev/nolimips.xml, dev/parse-asm-parse-gen.py, * dev/parse-asm-scan-gen.py, * doc/Makefile.am, doc/macros.texi, * src/Makefile.am, src/common.hh, src/modules.hh, * src/inst/section.hh, * src/inst/data_section.hh, src/inst/data_section.cc * src/inst/text_section.hh, src/inst/text_section.cc, * src/inst/program.hh, src/inst/program_builder.cc, * src/inst/exp-visitor.hh, src/inst/exp.hh, src/inst/exp.cc * src/inst/inst-tasks.cc, src/inst/inst-tasks.hh, * src/inst/inst.hh, src/inst/label.cc, src/inst/label.hh * src/inst/register.hh, * src/parse/Makefile.am, src/parse/asm-scan.hh, * src/parse/libparse.cc, src/parse/libparse.hh, * src/parse/parse-tasks.cc, src/parse/parse-tasks.hh, * src/shell/cmd.hh, * src/shell/shell-tasks.cc, src/shell/shell-tasks.hh, * src/shell/shell.cc, src/shell/shell.hh, * src/task/task-tasks.cc, src/task/task-tasks.hh, * src/task/task.cc, src/task/task.hh, * src/task/task_register.cc, src/task/task_register.hh, * src/vm/cp0.hh, src/vm/cpu.hh, src/vm/cpu.cc * src/vm/memory.hh, src/vm/mmu.hh, src/vm/segment.hh * src/vm/table.hh, src/vm/virtual_machine.hh * src/vm/vm-tasks.cc, src/vm/vm-tasks.hh * tests/Makefile.am, tests/generate-ref.mk, tests/good/check-good * tests/good/fact.s, tests/lexical/check-lexical, * tests/runtime/check-runtime, tests/solve/check-solve * tests/syntax/check-syntax, tests/unlimited/check-unlimited: Rename mipsy as nolimips. * dev/mipsy.py, dev/mipsy.xml, * doc/mipsy.texi, * src/mipsy.cc, src/mipsy-tasks.cc, src/mipsy-tasks.hh, * tests/mipsy-check: Move to... * dev/nolimips.py, dev/nolimips.xml, * doc/nolimips.texi, * src/nolimips.cc, src/nolimips-tasks.cc, src/nolimips-tasks.hh, * tests/nolimips-check: These new files. * NEWS, configure.ac: Bump to nolimips-0.7. 2004-05-20 Benoît Perrot * src/misc/contract.hh, * src/misc/counted_ptr.hh, * src/misc/deref.hh, * src/misc/escape.hh, * src/misc/has.hh, * src/misc/select_const.hh: Add license. 2004-05-15 Benoît Perrot * src/misc/counted_ptr.hh, * src/misc/Makefile.am: Add counted_ptr tool. * dev/inst-nodes-gen.py, * src/inst/exp.hh, * src/inst/program_builder.cc: Use counted pointers in expression trees. 2004-05-08 Benoît Perrot * NEWS, * dev/inst-builder-gen.py, * src/parse/libparse.cc, src/parse/libparse.hh, * src/parse/parse-tasks.cc, src/parse/parse-tasks.hh, * src/shell/cmd.hh, * src/shell/shell.cc, src/shell/shell.hh, * tests/good/Makefile.am, tests/good/check-good * tests/runtime/check-runtime, * tests/unlimited/Makefile.am, tests/unlimited/check-unlimited: Rename `--fill-delay-slots' to `--nop-after-branch', which is more accurate. Reserve `--fill-delay-slots' for optimal delay slots filling. * doc/mipsy.texi: Document it. 2004-05-08 Benoît Perrot * tests/good/fact.s, tests/good/Makefile.am: Add new test. 2004-05-08 Benoît Perrot * src/inst/register.hh: Add a copy constructor. * dev/inst-nodes-gen.py: Copy inst::Registers instead of keeping a pointer on them, avoiding hazardous memory manipulations. * dev/inst-builder-gen.py, src/inst/program_builder.cc, * src/vm/cpu.cc (bubble_): Prefer copy to reallocation of inst::Registers. * dev/parse-asm-parse-gen.py: Once they are copied, delete the inst::Registers created by the scanner. 2004-05-01 Benoît Perrot * src/shell/shell.cc: Use std::cin when readline library cannot be used. Add history to readline. 2004-05-01 Benoît Perrot * configure.ac, config/readline.m4, * src/Makefile.am, src/shell/Makefile.am: Improve readline detection and related information use. 2004-05-01 Benoît Perrot * src/shell/cmd.hh, * src/shell/shell.hh, src/shell/shell.cc: Use std::string instead of char* or std::string*, avoiding hazardous memory manipulations. 2004-04-25 Benoît Perrot * src/shell/cmd.hh, * src/shell/shell.cc, src/shell/shell.hh: Use references for aggregated attributes, and pointers for composed attributes. 2004-04-25 Benoît Perrot Use coprocessor to raise exception. * src/vm/cp0.hh: (raise_overflow) Raise an arithmetic overflow exception. * src/vm/cpu.cc: Call raise_overflow when an arithmetic overflow occurs. 2004-04-25 Benoît Perrot * src/mipsy-tasks.hh, * src/vm/vm-tasks.hh, * src/shell/shell-tasks.hh: Add short options. * src/task/task_register.hh, src/task/task_register.cc: Support concatenated short options. * NEWS, doc/mipsy.texi: Document this. 2004-04-24 Benoît Perrot Enhance readline detection. * config/readline.m4: Provide AC_CHECK_READLINE. * configure.ac, src/Makefile.am: Use AC_CHECK_READLINE to check readline library presence and usability. 2004-04-24 Benoît Perrot Restore distcheck with automake1.8 * Makefile.am: Distribute inst-solver-gen.py. * dev/doc-inst-set-gen.py, * doc/mipsy.texi: Suggested by Akim Demaille: do not use commands in @node. The file texinfo.tex from automake1.8 does not handle it, leading to make dvi failure, leading to make distcheck failure. * doc/Makefile.am: Do not distribute deprecated files anymore. 2004-04-24 Benoît Perrot * AUTHORS: Add Jérémy Demeule as contributor. * NEWS: Update. 2004-04-20 Jérémy Demeule Add an interactive shell. * src/vm/cpu.hh, src/vm/cpu.cc: Add a print operator. * src/vm/virtual_machine.hh: Add breakpoint suport and some shell entry points for step by step execution. * src/shell/cmd.hh, * src/shell/shell.cc, src/shell/shell.hh: Implement interactive shell, using readline. * src/shell/shell-tasks.cc, src/shell/shell-tasks.hh: Add shell's tasks. * src/shell/Makefile.am: Distribute shell. * src/modules.hh: Declare shell. * configure.ac: Check for readline library. Add shell directory. * src/Makefile.am: Add shell directory and link with readline. 2004-04-05 Benoît Perrot * src/vm/cp0.hh: Add control coprocessor. * src/vm/Makefile.am: Distribute it. * src/vm/cpu.hh, src/vm/cpu.cc, * src/vm/virtual_machine.hh: Use control coprocessor. * dev/mipsy.py, * dev/mipsy.xml: Add instructions to move registers to/from control coprocessor. * dev/inst-solver-gen.py, Check register identifiers for control coprocessor instructions. 2004-04-05 Benoît Perrot * dev/inst-solver-gen.py, * dev/parse-asm-scan-gen.py, * src/inst/register.hh: Support generic register identifiers. * NEWS: Document it. * tests/lexical/unlimited-regs.s: Move to... * tests/solve/unlimited-regs.s: This file. * tests/lexical/Makefile.am, * tests/solve/Makefile.am: Update. 2004-04-05 Benoît Perrot * dev/mipsy.py: Add a C++ variable identifier writer. * dev/inst-solver-gen.py: Generate program solver (interface and implementation). * dev/inst-makefile-gen.py: Use the generator. * src/inst/program_solver.hh: Remove now generated file. 2004-04-03 Benoît Perrot * src/common.hh, * src/mipsy.cc, * src/inst/exp.hh, * src/inst/register.hh, * src/vm/cpu.hh, src/vm/cpu.cc: Use STL type naming style on enumerations. 2004-04-03 Benoît Perrot * dev/inst-nodes-gen.py, * src/inst/exp.cc: Display the identifier of labels and registers instead of their address. 2004-03-28 Benoît Perrot More documentation. * doc/copying.texi, * doc/internal.texi, * doc/invoking.texi, * doc/language.texi: Suggested by Akim Demaille: remove files, move their content to... * doc/mipsy.texi: ... this file. Augment documentation on invocation. 2004-03-28 Benoît Perrot Homogenize attribute names. * dev/inst-builder-gen.py, src/inst/program_builder.cc, * src/inst/data_section.hh, src/inst/data_section.cc, * src/inst/exp.hh, src/inst/exp.cc, * src/inst/label.cc, src/inst/label.hh, * src/inst/program.hh, * src/inst/program_solver.hh, * src/inst/register.hh, * src/inst/section.hh, * src/inst/text_section.hh, src/inst/text_section.cc, * src/misc/deref.hh, src/misc/escape.hh, * src/task/task.cc, src/task/task.hh * src/task/task_register.cc, src/task/task_register.hh * src/vm/cpu.hh, src/vm/cpu.cc * src/vm/memory.hh, src/vm/segment.hh, * src/vm/table.hh, * src/vm/virtual_machine.hh: Rename... (_program, fill_delay_slot_p, _size, bytes, immediate, integer) (label, kind, left, right, set, set_node, _text_section, _data_section) (_pc, _program, kind, index, labels, offsets, insts, postr, s) (print_delim, _long_opt, _short_opt, _module, _description) (dependencies, _execute, _modules, _tasks, _enabled_tasks, mmu, GPR) (hi, lo, pc, unlimited, halt, istr, ostr, call_stack) (check_callee_save_p, trace_p, bubble, pipeline, heap, stack) (stack_top, _size, _bytes, _scopes, memory, mmu, cpu) as... (program_, fill_delay_slot_p_, size_, bytes_, immediate_, integer_) (label_, kind_, left_, right_, set_, set_node_, text_section_) (data_section_, pc_, program_, kind_, index_, labels_, offsets_) (insts_, postr_, s_, print_delim_, long_opt_, short_opt_, module_) (description_, dependencies_, execute_, modules_, tasks_) (enabled_tasks_, mmu_, GPR_, hi_, lo_, pc_, unlimited_, halt_, istr_) (ostr_, call_stack_, check_callee_save_p_, trace_p_, bubble_) (pipeline_, heap_, stack_, stack_top_, size_, bytes_, scopes_) (memory_, mmu_, cpu_) 2004-03-21 Benoît Perrot * INSTALL: New. * README, TODO: Update. 2004-03-18 Benoît Perrot Inline definition of a virtual method is nonsense. * src/inst/exp.cc, * src/inst/data_section.cc, * src/inst/text_section.cc: New. * dev/inst-makefile-gen.py, * src/task/task.hh, src/task/task.cc * src/inst/exp.hh, * src/inst/data_section.hh, * src/inst/text_section.hh: Move definitions of virtual methods in corresponding implementation file. 2004-02-29 Benoît Perrot Track memory leaks. * dev/inst-builder-gen.py, * dev/inst-nodes-gen.py, * dev/mipsy.xml, * dev/parse-asm-parse-gen.py, * src/inst/data_section.hh, * src/inst/exp.hh, * src/inst/program_builder.cc, * src/inst/section.hh, * src/inst/text_section.hh, * src/vm/cpu.hh, src/vm/cpu.cc * src/vm/segment.hh, * src/vm/vm-tasks.cc: Use pointers instead of references for each allocated attribute, and delete them. 2004-02-24 Benoît Perrot * dev/doc-inst-set-gen.py, * dev/inst-builder-gen.py, * dev/inst-makefile-gen.py, * dev/inst-nodes-gen.py, * dev/mipsy.py, * dev/mipsy.xml, * dev/parse-asm-parse-gen.py, * dev/parse-asm-scan-gen.py, * src/common.hh, * src/mipsy-tasks.cc, src/mipsy-tasks.hh, * src/mipsy.cc, * src/modules.hh, * src/inst/data_section.hh, * src/inst/exp-visitor.hh, * src/inst/exp.hh, * src/inst/inst-tasks.cc, src/inst/inst-tasks.hh, * src/inst/inst.hh, * src/inst/label.cc, src/inst/label.hh, * src/inst/program.hh, * src/inst/program_builder.cc, * src/inst/program_solver.hh, * src/inst/register.hh, * src/inst/section.hh, * src/inst/text_section.hh, * src/parse/asm-scan.hh, * src/parse/libparse.cc, src/parse/libparse.hh, * src/parse/parse-tasks.cc, src/parse/parse-tasks.hh, * src/task/task-tasks.cc, src/task/task-tasks.hh, * src/task/task.cc, src/task/task.hh, * src/task/task_register.cc, src/task/task_register.hh, * src/vm/cpu.hh, src/vm/cpu.cc, * src/vm/memory.hh, * src/vm/mmu.hh, * src/vm/segment.hh, * src/vm/table.hh, * src/vm/virtual_machine.hh, * src/vm/vm-tasks.cc, src/vm/vm-tasks.hh: Update Copyright. Suggested by Akim Demaille. 2004-02-23 Benoît Perrot Use STL type naming style. * dev/inst-nodes-gen.py, * src/inst/section.hh, * src/inst/data_section.hh, * src/inst/text_section.hh, * src/inst/exp.hh, src/inst/exp-visitor.hh * src/inst/label.hh, src/inst/label.cc, * src/task/task.hh, * src/task/task_register.cc, * src/vm/cpu.hh, src/vm/cpu.cc, * src/vm/table.hh, * src/misc/select_const.hh (label_list_t, kind_t, string_set_t) (offset_label_t, label_offset_t, deps_t, register_t, uregister_t) (scope_t, scope_t, t): Rename as... (label_list_type, kind_type, string_set_type, offset_label_type) (label_offset_type, deps_type, register_type, uregister_type) (scope_type, scopes_type, type): these. 2004-01-15 Benoît Perrot * dev/doc-inst-set-gen.py, * dev/inst-builder-gen.py, * dev/inst-makefile-gen.py, * dev/inst-nodes-gen.py, * dev/parse-asm-parse-gen.py, * dev/parse-asm-scan-gen.py, * src/parse/Makefile.am, * bootstrap: Use lazy overwrite to limit file building. 2004-01-15 Benoît Perrot * dev/mipsy.xml: Describe each instruction. * dev/doc-inst-set-gen.py: New file. * Makefile.am: Distribute it. * doc/Makefile.am, * doc/language.texi, * doc/mipsy.texi: Use doc-inst-set-gen.py and updated mipsy.xml to generate instruction set documentation. 2004-01-13 Benoît Perrot * doc/fdl.texi, * doc/mipsy.texi, * doc/copying.texi, * doc/internal.texi, * doc/invoking.texi, * doc/language.texi, * doc/macros.texi: Organize texi files. * doc/Makefile.am: Distribute new files. 2004-01-12 Benoît Perrot * configure.ac, NEWS: Release 0.5, bump to 0.6. * tests/good/Makefile.am, * tests/unlimited/Makefile.am, * tests/unlimited/check-unlimited: Test mipsy forcing NOPs after native branches. 2004-01-12 Benoît Perrot * src/vm/cpu.hh, src/vm/cpu.cc: Add delay slot support. * tests/good/check-good, tests/runtime/check-runtime: Test mipsy forcing NOPs after native branches. 2004-01-12 Benoît Perrot * dev/inst-builder-gen.py, * src/inst/program_builder.cc: Prepare delay slots support by adding NOPs after native branches of complex instructions. 2004-01-12 Benoît Perrot * src/vm/cpu.hh, * src/vm/memory.hh, * src/vm/mmu.hh, * src/vm/virtual_machine.hh: Add some comments. 2004-01-12 Benoît Perrot * src/vm/mmu.hh: * src/vm/Makefile.am: Distribute mmu.hh. * src/vm/cpu.hh, src/vm/cpu.cc, * src/vm/virtual_machine.hh: Use a Memory Management Unit to access memory. 2004-01-10 Benoît Perrot * dev/inst-nodes-gen.py: Generate interface of classes in .hh files, inline methods in .hxx files, implementation in .cc. * dev/inst-makefile-gen.py: Distribute .hh, .hxx, .cc files of each class. Use a stamp file to avoid useness launching of generators. 2004-01-10 Benoît Perrot * dev/mipsy.xml, dev/parse-asm-parse-gen.py: Use human readable identifiers to locate tokens. 2004-01-10 Benoît Perrot * dev/mipsy.xml: Use a better DTD. * dev/mipsy.py: Use new DTD. * dev/inst-builder-gen.py, * dev/inst-nodes-gen.py, * dev/parse-asm-parse-gen.py, * dev/parse-asm-scan-gen.py: Use new mipsy.py package. 2004-01-08 Benoît Perrot * dev/parse-asm-scan.py: Simplify scanner register generation. * dev/mipsy.py: Remove useless accessors. Use a '__str__' method instead of 'display'. 2004-01-08 Benoît Perrot * dev/mipsy-parser-gen.py: Move to... * dev/parse-asm-parse-gen.py: ... this file. * dev/mipsy-scanner-gen.py: Move to... * dev/parse-asm-scan-gen.py: ... this file. * src/parse/Makefile.am: Use new files' names. * dev/mipsy-builder-gen.py: Move to... * dev/inst-builder-gen.py: ... this file. * dev/mipsy-inst-gen.py: Move to... * dev/inst-nodes-gen.py: ... this file. * dev/mipsy-mk-inst-gen.py: Move to... * dev/inst-makefile-gen.py: ... this file. Use new files' names. * bootstrap, Makefile.am: Use new files' names. 2004-01-06 Benoît Perrot * dev/mipsy.py: Add lazy_overwrite and comments. * dev/mipsy-builder-gen.py, dev/mipsy-mk-inst-gen.py, * dev/mipsy-parser-gen.py, dev/mipsy-scanner-gen.py: Limit function importations. 2003-10-11 Benoît Perrot * src/vm/cpu.hh, src/vm/virtual_machine.hh, src/vm/vm-tasks.cc: Make the CPU responsible of its instruction flow. 2003-10-11 Benoît Perrot * src/vm/cpu.hh, src/vm/cpu.cc: Uniformize register accessors, removing deprecated ones. 2003-09-08 Benoît Perrot * src/vm/memory.hh: Increase default stack size to 512 Ko. 2003-09-04 Benoît Perrot * Makefile.am: Do not distribute license.hh. 2003-08-21 Benoît Perrot Make the Cpu responsible of the execution of instructions ; the VirtualMachine must be seen as a motherboard that could support more than one Cpu. * src/vm/virtual_machine.cc: Move to... * src/vm/cpu.cc: here. * src/vm/Makefile.am: Propagate it. * src/vm/virtual_machine.hh: Move execution interface to... * src/vm/cpu.hh: here. 2003-08-20 Benoît Perrot * dev/mipsy.xml: Add mul with immediate pseudo-instruction. * src/inst/program_builder.cc: Expand it. 2003-08-19 Benoît Perrot * dev/mipsy-scanner-gen.py: Accept a quoted character as an integer value. 2003-08-14 Benoît Perrot * configure.ac, NEWS: Release 0.4, bump to 0.5. * Makefile.am: Distribute bootstrap. 2003-08-13 Benoît Perrot * tests/good/check-good, * tests/lexical/check-lexical, * tests/runtime/check-runtime, * tests/solve/check-solve, * tests/syntax/check-syntax, * tests/unlimited/check-unlimited: Distribute sub scripts. 2003-08-13 Benoît Perrot * src/vm/virtual_machine.cc (syscall): Look for $a0 as argument of exit syscall. * tests/good/add-sub.s, * tests/good/and-or-nor-xor.s, * tests/good/exit.s, * tests/good/extended-euclide.s, * tests/good/gtcd.s, * tests/good/modular-exponent.s, * tests/good/neg.s, * tests/good/not.s, * tests/good/print.s, * tests/good/print_int.s, * tests/good/read_int.s, * tests/good/seq-sne.s, * tests/good/shift.s, * tests/runtime/neg.s, * tests/runtime/no-main.s, * tests/solve/undefined-labels.s, * tests/syntax/asciiz-wrong-param.s, * tests/syntax/too-many-operands.s, * tests/unlimited/simple-exp.s: Use exit(0). 2003-08-11 Benoît Perrot * tests/Makefile.am: Distribute tests machinery. * tests/common.mk: Distribute variables and rules used by the test suite. * tests/generate-ref.mk: Distribute reference output files generators. * tests/mipsy-check: Distribute main test script. * tests/lexical/invalid-string-hexa.s, * tests/lexical/invalid-string-octal.s, * tests/lexical/unlimited-regs.s, * tests/lexical/unrecognized-escape.s, * tests/lexical/unterminated-string.s, * tests/lexical/Makefile.am: Distribute tests that fail at scan level. * tests/syntax/too-many-operands.s, * tests/syntax/asciiz-wrong-param.s, * tests/syntax/Makefile.am: Distribute tests that fail at parse level. * tests/solve/undefined-labels.s, * tests/solve/Makefile.am: Distribute tests that fail at solve-time. * tests/runtime/abs.s, * tests/runtime/neg.s, * tests/runtime/no-main.s, * tests/runtime/Makefile.am: Distribute tests that fail at run-time. * tests/unlimited/simple-exp.s, * tests/unlimited/Makefile.am: Distribute tests that use unlimited registers. * tests/good/add-sub.s, * tests/good/and-or-nor-xor.s, * tests/good/exit.s, * tests/good/extended-euclide.s, * tests/good/gtcd.s, * tests/good/modular-exponent.s, * tests/good/neg.s, * tests/good/not.s, * tests/good/print.s, * tests/good/print_int.s, * tests/good/read_int.s, tests/good/read_int.in, * tests/good/seq-sne.s, * tests/good/shift.s, * tests/good/Makefile.am: Distribute tests that execute normally. * configure.ac, Makefile.am: Distribute tests suite. 2003-07-29 Benoît Perrot * dev/mipsy.xml, src/inst/program_builder.cc: Normalize move to addu. 2003-07-29 Benoît Perrot * dev/mipsy-builder-gen.py, * src/parse/libparse.hh, src/parse/libparse.cc, * src/parse/parse-tasks.hh, src/parse/parse-tasks.cc: Fill delay slot of native branch instructions with NOP. * NEWS: Update. 2003-07-29 Benoît Perrot * configure.ac: Bump to 0.4. 2003-07-29 Benoît Perrot * src/task/task_register.cc: Fix usage display. 2003-07-29 Benoît Perrot * dev/mipsy.xml, dev/mips.py: Specify instruction kind. 2003-07-29 Benoît Perrot * dev/mipsy-scanner-gen.py, * src/parse/libparse.hh, src/parse/libparse.cc, * src/parse/parse-tasks.hh, src/parse/parse-tasks.cc: Make unlimited registers optional. 2003-07-29 Benoît Perrot * src/task/task_register.hh (parse_args): Do not search beyond map's end. 2003-07-28 Benoît Perrot * NEWS: Describe main version changes. 2003-07-27 Benoît Perrot * src/task/task_register.hh, src/task/task_register.cc: Disambiguate uncomplete options. Clean usage display. * src/mipsy.cc: Launch "--execute" if no option is specified. 2003-07-26 Benoît Perrot * dev/mipsy-mk-inst-gen.py: Distribute section.hh. 2003-07-20 Benoît Perrot * src/vm/virtual_machine.hh, src/vm/virtual_machine.cc, * src/vm/vm-tasks.hh, src/vm/vm-tasks.cc: Check preservation of callee save registers on demand. * src/parse/parse-tasks.cc: Remove useless includes. * TODO: Update. 2003-07-18 Benoît Perrot * src/inst/register.hh, src/vm/cpu.hh: Move general register indices from Register.hh into Cpu. * src/inst/program_builder.cc, * dev/mipsy.xml, dev/mipsy-parser-gen.py, dev/mipsy-scanner-gen.py: Adjust. 2003-07-18 Benoît Perrot * src/vm/cpu.hh: Add a checker for unlimited register existence. 2003-07-17 Benoît Perrot * src/vm/memory.hh: stack_size is an argument of Memory constructor. 2003-07-17 Benoît Perrot * src/vm/virtual_machine.hh: (step) Return a boolean that indicates the end of the execution. 2003-07-17 Benoît Perrot * src/vm/memory.hh: Add accessors for heap and stack sizes. 2003-07-17 Benoît Perrot * src/inst/section.hh: Export types. * src/vm/virtual_machine.cc, src/vm/virtual_machine.hh: Use variable input and output streams. 2003-07-17 Benoît Perrot * src/inst/section.hh: Add a const accessor to Section's labels. 2003-07-12 Benoît Perrot * src/inst/section.hh, * src/inst/data_section.hh, src/inst/text_section.hh: Factor Section code. 2003-07-11 Benoît Perrot * config/depcomp, config/install-sh, config/missing, * config/mkinstalldirs: Remove auto-generated files. 2003-07-11 Benoît Perrot * configure.ac: Bump to 0.3. 2003-07-11 Benoît Perrot * src/vm/virtual_machine.cc: Set exit_status to exit_runtime when an exception occurs. 2003-07-11 Benoît Perrot * src/vm/virtual_machine.hh, src/vm/virtual_machine.cc: Define and use a step of execution. * src/common.hh, src/vm/vm-tasks.cc: Adjust. 2003-07-11 Benoît Perrot * dev/mipsy-scanner-gen.py, * src/inst/register.hh, src/vm/cpu.hh: Use a register vector for general purpose registers. * src/vm/virtual_machine.cc: Adjust. 2003-07-10 Benoît Perrot * dev/mipsy.xml, src/inst/program_solver.hh, src/vm/virtual_machine.hh: Normalize nop to sll zero, zero, 0. 2003-07-07 Benoît Perrot * bootstrap, dev/mipsy-mk-inst-gen.py: Generate src/inst/Makefile.am at bootstrap. 2003-07-07 Benoît Perrot * src/task/task.hh: Remove useless ";" at end of macro definitions. 2003-07-07 Benoît Perrot * dev/mipsy.xml, * src/inst/program_builder.cc, * src/inst/program_solver.hh, * src/vm/cpu.hh, * src/vm/virtual_machine.hh, src/vm/virtual_machine.cc: Use HI and LO register to execute div, divu, rem, remu. 2003-07-06 Benoît Perrot * src/vm/virtual_machine.cc: read_string stops after an OEF or a newline; if a newline is read, it is stored into the buffer. 2003-07-05 Benoît Perrot * dev/mipsy.xml, * src/inst/program_builder.cc, src/inst/program_solver.hh, * src/vm/virtual_machine.hh, src/vm/virtual_machine.cc: Support more comparison instructions. Implement shift (logical and arithmetical) and rotate. Add some syntaxes to branch instructions. 2003-06-29 Benoît Perrot * dev/mipsy.xml, src/inst/program_builder.cc: Use gcc's expansion of complex and pseudo instructions. * src/vm/virtual_machine.cc: Check overflow in Sub. 2003-06-29 Benoît Perrot * dev/mipsy-parser-gen.py: Allow expression for destination of branch instructions. * dev/mipsy-inst-gen.py: Generate an Exp& variable for a label. * src/inst/program_builder.cc, src/inst/program_solver.hh, * src/vm/virtual_machine.cc, Adjust. 2003-06-29 Benoît Perrot * doc/mipsy.texi: Add some comments on internal. 2003-06-29 Benoît Perrot * src/vm/virtual_machine.hh: Display a dedicated error message when the main label can not be found. 2003-06-29 Benoît Perrot * dev/mipsy.xml, dev/mipsy.py: Allow level of instruction override in syntax. Rename "neg" as "negu". * dev/mipsy-builder-gen.py: Adjust. * src/inst/program_builder.cc: Support more syntaxes on branch instructions, support neg. * src/vm/virtual_machine.cc: Adjust overflow detection. 2003-06-29 Benoît Perrot * dev/mipsy-parser-gen.py, dev/mipsy-scanner-gen.py, * dev/mipsy-builder-gen.py, dev/mipsy.py, dev/mipsy.xml * src/common.hh, src/modules.hh, * src/mipsy-tasks.hh, src/mipsy-tasks.cc, src/mipsy.cc, * src/inst/data_section.hh, * src/inst/exp-visitor.hh, * src/inst/exp.hh, * src/inst/inst.hh, * src/inst/program.hh, * src/inst/program_builder.cc, * src/inst/program_solver.hh, * src/inst/register.hh, * src/inst/text_section.hh, * src/parse/asm-scan.hh, * src/parse/libparse.hh, src/parse/libparse.hh, * src/parse/parse-tasks.hh, src/parse/parse-tasks.cc, * src/task/task-tasks.hh, src/task/task-tasks.cc, * src/task/task.cc, src/task/task.hh, * src/task/task_register.hh, src/task/task_register.cc, * src/vm/cpu.hh, * src/vm/memory.hh, * src/vm/segment.hh, * src/vm/table.hh, * src/vm/virtual_machine.hh, src/vm/virtual_machine.cc, * src/vm/vm-tasks.hh, src/vm/vm-tasks.cc: Add license. 2003-06-29 Benoît Perrot * doc/mipsy.texi, doc/fdl.texi, doc/Makefile.am, * configure.ac: Begin documentation effort. 2003-06-29 Benoît Perrot * Makefile.am, src/Makefile.am, src/misc/Makefile.am, * src/parse/Makefile.am, src/task/Makefile.am, src/vm/Makefile.am: Support automatic generation. * README: Document it. 2003-06-29 Benoît Perrot * vm/table.hh, cpu.hh: Allow unlimited registers. * vm/memory.hh: New. * vm/segment.hh: New. * vm/virtual_machine.{hh, cc}: Implement instructions. 2003-06-29 Benoît Perrot * dev/mipsy-builder-gen.py: Use MIPS instruction set to generate ProgramBuilder. * src/inst/program_builder.cc: Implement complex opcodes expansion. * dev/mipsy-parser-gen.py: Use ProgramBuilder. 2003-06-28 Benoît Perrot * src/inst/{data, text}_section.hh: New. * src/inst/program.hh: New. * src/inst/visitor.hh: New. * src/inst/program_solver.hh: New. 2003-06-28 Benoît Perrot * src/inst/inst.hh: New. * dev/mipsy-inst-gen.py: Use MIPS instruction set to generate Inst class declarations. 2003-06-28 Benoît Perrot * src/inst/register.hh: New. * src/inst/Makefile.am, src/Makefile.am Distribute and compile 'inst' module. * src/inst/label.{hh, cc}: New. * src/inst/Makefile.am, src/Makefile.am: Distribute and compile labels. * src/parse/asm-{scan.ll, parse.yy}: Use labels and registers. 2003-06-27 Benoît Perrot * src/misc/: Add miscellaneous helpers. * src/misc/Makefile.am, src/Makefile.am: Distribute and compile 'misc' module. * src/parse/asm-{scan.ll, parse.yy}: Use misc helpers. 2003-06-27 Benoît Perrot * dev/mipsy.xml: Add MIPS instruction set xml file. * dev/mipsy.py: Add MIPS instruction set xml parser. * dev/mipsy-{scanner, parser}-gen.py: Use MIPS instruction set to generate flex and bison files. * src/parse/Makefile.am, src/Makefile.am: Distribute and compile 'parse' module. 2003-06-27 Benoît Perrot * ./, ./dev/, ./src/, ./src/parse/: Create development tree. * ./config/, configure.ac, Makefile.am: Use autotools. * src/mipsy.cc: Add dummy driver.