Next: , Previous: , Up: Running the program   [Contents][Index]

3.3.2 Interactive mode

To enter the MIX virtual machine interactive mode, simply type

mixvm RET

at your shell command prompt. This command enters the mixvm command shell. You will be presented the following command prompt:


The virtual machine is initialised and ready to accept your commands. The mixvm command shell uses GNU’s readline, so that you have at your disposal command completion (using TAB) and history functionality, as well as other line editing shortcuts common to all utilities using this library (for a complete description of readline’s line editing usage, see (Readline)Command Line Editing.)

Usually, the first thing you will want to do is loading a compiled MIX program into memory. This is accomplished by the load command, which takes as an argument the name of the .mix file to be loaded. Thus, typing

MIX > load hello RET
Program loaded. Start address: 3000

will load hello.mix into the virtual machine’s memory and set the program counter to the address of the first instruction. You can obtain the contents of the program counter using the command pc:

MIX > pc
Current address: 3000

After loading it, you are ready to run the program, using, as you surely have guessed, the run command:

MIX > run
Running ...
... done
Elapsed time: 11 /Total program time: 11 (Total uptime: 11)

Note that now the timing statistics are richer. You obtain the elapsed execution time (i.e., the time spent executing instructions since the last breakpoint), the total execution time for the program up to now (which in our case coincides with the elapsed time, since there were no breakpoints), and the total uptime for the virtual machine (you can load and run more than one program in the same session)14. After running the program, the program counter will point to the address after the one containing the HLT instruction. In our case, asking the value of the program counter after executing the program will give us

MIX > pc
Current address: 3002

You can check the contents of a memory cell giving its address as an argument of the command pmem, like this

MIX > pmem 3001
3001: + 00 00 00 02 05 (0000000133)

and convince yourself that address 3001 contains the binary representation of the instruction HLT. An address range of the form FROM-TO can also be used as the argument of pmem:

MIX > pmem 3000-3006
3000: + 46 58 00 19 37 (0786957541)
3001: + 00 00 00 02 05 (0000000133)
3002: + 14 09 27 01 13 (0237350989)
3003: + 00 08 05 13 13 (0002118477)
3004: + 16 00 26 16 19 (0268542995)
3005: + 13 04 00 00 00 (0219152384)
3006: + 00 00 00 00 00 (0000000000)

In a similar manner, you can look at the contents of the MIX registers and flags. For instance, to ask for the contents of the A register you can type

MIX > preg A
rA: + 00 00 00 00 00 (0000000000)

Use the command help to obtain a list of all available commands, and help COMMAND for help on a specific command, e.g.

MIX > help run
run             Run loaded or given MIX code file. Usage: run [FILENAME]

For a complete list of commands available at the MIX propmt, See mixvm. In the following subsection, you will find a quick tour over commands useful for debugging your programs.

Next: , Previous: , Up: Running the program   [Contents][Index]