Arm Instruction Emulator Tutorials

Browse our tutorials to learn about how to use Arm Instruction Emulator.

  • Human head showing understanding.
  • Get started with Arm Instruction Emulator

    A series of simple examples to demonstrate how to compile SVE code, run the resulting executable and analyze runtime behavior with Arm Instruction Emulator.

    Get started
  • A line drawing representing full value procurement.
  • Analyze SVE applications

    Use a basic instrumentation client to perform runtime analysis on your high-performance application. This enables you to gain insights into your application's execution behavior and identify heavily-used loops and instruction sequences.

    Learn more

Instrumentation guides

Instrumentation client structure

The basic structure of an instrumentation client, including the main events that occur during execution and what happens in each event. 

Learn more

Build custom analysis instrumentation

How to modify the instrumentation of an existing client, then build and execute the modified client with Arm Instruction Emulator.

Learn more

View the DynamoRIO command

Use the -s or --show-drrun-cmd option when running ArmIE on a binary, to output the full DynamoRIO drrun command that ArmIE uses.

Learn more

Build an emulation-aware client

Learn how to modify the existing native-only clients to also handle emulated instructions, and to write emulation aware clients of your own.

Learn more

Learn about Scalable Vector Extension (SVE and SVE2)

Scalable Vector Extension (SVE) is a vector extension for AArch64 execution mode for the A64 instruction set of the Armv8-A architecture.

SVE2 (Scalable Vector Extension version two) is a superset of SVE and Neon, and allows for more function domains in data-level parallelism. SVE2 inherits the concept, vector registers, and operation principles of SVE.

Learn about SVE and SVE2

Porting your code?

If you are porting your code to an SVE-enabled Arm-based processor, read our porting and optimization for Arm SVE guide:

SVE Porting guide

Related information

  • Source code for the instrumentation clients is provided with the Arm Instruction Emulator build, in the samples directory:

    The files in this directory are inscount_emulated.cppopcodes_emulated.cpp and memtrace_simple.c. You can modify and enhance these for your specific analysis. See Building Custom Analysis Instrumentation for instructions on how to do this.
  • View the SVE Hackathon resources from SC18
  • Download ArmIE
  • SVE resources