Expand description

Target configuration

Structs

  • This is the target that we will use for compiling the WebAssembly ModuleInfo, and then run it.
  • A target “triple”. Historically such things had three fields, though they’ve added additional fields over time.

Enums

  • The “architecture” field, which in some cases also specifies a specific subarchitecture.
  • The “binary format” field, which is usually omitted, and the binary format is implied by the other fields.
  • The calling convention, which specifies things like which registers are used for passing arguments, which registers are callee-saved, and so on.
  • The nomenclature is inspired by the cpuid crate. The list of supported features was initially retrieved from cranelift-native.
  • The target memory endianness.
  • The “environment” field, which specifies an ABI environment on top of the operating system. In many configurations, this field is omitted, and the environment is implied by the operating system.
  • The “operating system” field, which sometimes implies an environment, and sometimes isn’t an actual operating system.
  • The width of a pointer (in the default address space).
  • The “vendor” field, which in practice is little more than an arbitrary modifier.