VisUAL - A highly visual ARM emulator
source link: https://salmanarif.bitbucket.io/visual/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
VisUAL has been developed as a cross-platform tool to make learning ARM Assembly language easier. In addition to emulating a subset of the ARM UAL instruction set, it provides visualisations of key concepts unique to assembly language programming and therefore helps make programming ARM assembly more accessible.
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.
Key Features
Navigate Program History
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.
Pointer Visualisation
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.
Shift Operation Visualisation
VisUAL can demonstrate shift operations by playing them as animations. The animations use actual data values from the shift instruction being demonstrated.
Your browser does not support HTML5 video.
Memory Access Visualisation
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.
Stack Visualisation
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.
Branch Visualisation
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.
Subroutine Visualisation
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.
Error Correction Suggestions
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.
Infinite Loop Detection
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.
View Memory Contents
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.
View Symbols
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.
Headless Emulation Mode
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.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK