ARM64 Online Simulator
ARM64 Online Simulator
The simulator was developed for teaching 64-bit ARM Instruction set in CSC 220 and CSC 446 at CUNY College of Staten Island by Prof. Shuqun Zhang.
It is based on the the Unicorn CPU emulator framework for JavaScript by Alexandro Sanchez (https://github.com/AlexAltea/unicorn.js).
Features and usage
- Support 64-bit ARM instruction set. 4kB memory (address 0x10000 - 0x11000).
- Code segment: 0x10000 - 0x107FF, data segment:0x10800 - 0x10DFF, Stack segment 0x10E00 - 0x10FFF
- Not supported: directives, system call (SVC)
- Pseudo instruction "LDR reg, #imm" is not supported. You can use "ADR x1, #0x800" (reg x1 will have the value of 0x10800 insetad of 0x00800), then use "LDR/STR x2, [x1]" to load/store the data in the data segment.
- You can modify register value by double-clicking on it and enter the new value in hexadecimal
- Refresh the browser if something is wrong
Free online books:
1. Dive into Systems , Suzanne J. Matthews, Tia Newhall, Kevin C. Webb
2. Plantz, Robert G., Introduction to Computer Organization: ARM Assembly Language Using the Raspberry Pi 2017.
3. THINK IN GEEK, Exploring AArch64 assembler https://thinkingeek.com/categories/aarch64/
4. A Guide to ARM64 / AArch64 Assembly on Linux with Shellcodes and Cryptography, https://modexp.wordpress.com/2018/10/30/arm64-assembly/
Block diagram of instruction set architecture (ISA)
******************************************************************************
Some ARM64 examples for testing
******************************************************************************/
Features:
- Assembler directives
- .text / .code
- .data
- .byte
- .short
- .word
- .asciiz
- .space
- Debugging
- Breakpoints
- Stepping
- Highlighting machine code being executed
- Printing output
- Printing generated assembly code
- Registers values reflect current state
- Condition flags values reflect current state
- Memory values reflect current state
- Syntax highlighting for ARM assembly
- Change theme of code-editor
- Importing/Exporting Machine/Assembly Code and Sample Code
- Creating user account
- Saving projects
- Making them private or public
- Convertors
- Converting machine code into different formats
- Convertor in the bottom of the page for convenience