It has been designed specifically to use as a teaching tool for the Introduction to Computer Architecture course taught at the Department of Electrical and Electronic Engineering of Imperial College London.
In addition to stepping through code, users can navigate program history by browsing past register values. This feature can help debugging and understanding complex code easier.
Pointers in ARM assembly can be quite difficult to understand, especially since ARM assembly has 9 different variations of pointer behaviour when it comes to load/store instructions. VisUAL provides an information pane that displays useful pointer information when needed.
VisUAL can demonstrate shift operations by playing them as animations. The animations use actual data values from the shift instruction being demonstrated.
All memory access operations, word-aligned or byte-aligned, can be visualised. Base and offset addresses are shown, and any values that have been changed are highlighted.
Instructions to load/store multiple instructions in the form of a stack can be visualised. Stack behaviour is described, and the stack as well as stack pointer at the start and end of the stack are displayed.
Colour coded line highlights are used to indicate when a branch is being taken. For conditional instructions, status bits involved in condition checking are highlighted. An arrow points to the branch destination, acting as a visual cue to indicate a branch to another line of code is about to take place.
Whenever the link register is set to enter a subroutine, the linked subroutine return point will be highlighted and will remain highlighted until the subroutine exits.
As opposed to providing cryptic compiler error messages, VisUAL provides context-specific error messages with explanations of exactly what is expected. In addition, whenever a runtime error occurs, the user is informed of the problematic instruction and what operation in the instruction resulted in the error.
Inadvertently typed code that may result in an infinite loop can cause code to malfunction. VisUAL detects possible infinte loops and prompts the user to select the appropriate response.
By using the view memory contents window, data defined in memory can be monitored in real-time as it changes. This allows fast debugging of memory access instructions from a static viewpoint in addition to the dynamic viewpoint provided by the pointer and memory access visualisations.
The symbols window provides a list of all code and data symbols that have been defined. This provides an easy method of lookup up symbols during execution.
VisUAL allows assembly code to be executed via the command line and logs the program state to an XML file. This is useful for power users for testing large batches of code. See the logging guide for details on how to use this.