Module Arm_target

Declarations of various ARM targets.

The parent of all ARM targets.

When a new target is declared it is advised to use this target as parent so that the newly declared target will be included into the ARM Targets family. The parent target is pure abstract and doesn't have any propreties set.

A role for registers available in the thumb mode.

module LE : sig ... end

The family of little endian targets.

module EB : sig ... end

The family of big endian targets.

module Bi : sig ... end

The family of targets with switchable endiannes.

val load : ?features:string list -> ?interworking:bool -> ?backend:string -> unit -> unit

load () loads the knowledge base rules for the ARM targets.

This includes parsing the loader output and enabling backward compatibility with the old Arch.t representation.

  • parameter interworking

    if set disables/enables the interworking mode (switching between arm and thumb modes). If not set, then the presence of interworking is detected using heurisitics. Right now if the heuristic looks into the symbol table and if there is a symbol there with an odd address (which is used to indicate thumb encoding) then interworking is enabled.

  • parameter features

    is the backend-specific list of features. The syntax is vastly dependent on the backend. For llvm, in particular, the features are translated to the disassembler attributes. If the feature doesn't start with + or - then it is assumed that the feature is enabled and + is prepended.