Arm Instruction Emulator Tutorials

  • 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

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

/path/to/your/arm-instruction-emulator-<xx.y>_Generic-AArch64_<OS>_aarch64-linux/samples/

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.

Related resources

SVE resources

Learn about the Scalable Vector Extension (SVE and SVE2), the differences between SVE and SVE2, what the Vector Length Agnostic (VLA) programming approach is, and how SVE can be used in server and HPC computing.

Learn more

Porting to Arm SVE

Introduces the Arm Scalable Vector Extension (SVE) and describes how to port your high performance applications to SVE-enabled Arm-based systems.

View guide