AsmJit
Low-Latency Machine Code Generation
Represents an environment, which is usually related to a Target.
Environment has usually an 'arch-subarch-vendor-os-abi' format, which is sometimes called "Triple" (historically it used to be 3 only parts) or "Tuple", which is a convention used by Debian Linux.
AsmJit doesn't support all possible combinations or architectures and ABIs, however, it models the environment similarly to other compilers for future extensibility.
Creates a default initialized environment (all values either unknown or set to safe defaults).
Creates a copy of other
instance.
SubArch::kUnknown
, Vendor vendor = Vendor::kUnknown
, Platform platform = Platform::kUnknown
, PlatformABI platformABI = PlatformABI::kUnknown
, ObjectFormat objectFormat = ObjectFormat::kUnknown
, FloatABI floatABI = FloatABI::kHardFloat
)constexprexplicitconstexprnoexcept[3/3]◆ Creates Environment initialized to arch
, subArch
, vendor
, platform
, platformABI
, objectFormat
, and floatABI
.
Returns the host environment constructed from preprocessor macros defined by the compiler.
The returned environment should precisely match the target host architecture, sub-architecture, platform, and ABI.
Tests whether the environment is not set up.
Returns true if all members are zero, and thus unknown.
Tests whether the environment is initialized, which means it must have a valid architecture.
Resets all members of the environment to zero / unknown.
Tests whether this environment is equal to other
.
Returns the architecture.
Returns the sub-architecture.
Returns vendor.
Returns target's platform or operating system.
Returns target's ABI.
Returns target's object format.
Returns floating point ABI.
SubArch::kUnknown
, Vendor vendor = Vendor::kUnknown
, Platform platform = Platform::kUnknown
, PlatformABI platformABI = PlatformABI::kUnknown
, ObjectFormat objectFormat = ObjectFormat::kUnknown
, FloatABI floatABI = FloatABI::kHardFloat
)noexcept◆ Initializes Environment to arch
, subArch
, vendor
, platform
, platformABI
, objectFormat
, and floatABI
.
Tests whether this environment describes a 32-bit X86.
Tests whether this environment describes a 64-bit X86.
Tests whether this environment describes a 32-bit ARM.
Tests whether this environment describes a 32-bit ARM in THUMB mode.
Tests whether this environment describes a 64-bit X86.
Tests whether this environment describes a 32-bit MIPS.
Tests whether this environment describes a 64-bit MIPS.
Tests whether this environment describes a 32-bit RISC-V.
Tests whether this environment describes a 64-bit RISC-V.
Tests whether the architecture is 32-bit.
Tests whether the architecture is 64-bit.
Tests whether the architecture is little endian.
Tests whether the architecture is big endian.
Tests whether this architecture is of X86 family.
Tests whether this architecture family is ARM, THUMB, or AArch64.
Tests whether this architecture family is AArch32 (ARM or THUMB).
Tests whether this architecture family is AArch64.
Tests whether this architecture family is MISP or MIPS64.
Tests whether this architecture family is RISC-V (both 32-bit and 64-bit).
Tests whether the environment platform is Windows.
Tests whether the environment platform is Linux.
Tests whether the environment platform is Hurd.
Tests whether the environment platform is Haiku.
Tests whether the environment platform is any BSD.
Tests whether the environment platform is any Apple platform (OSX, iOS, TVOS, WatchOS).
Tests whether the ABI is MSVC.
Tests whether the ABI is GNU.
Tests whether the ABI is GNU.
Returns a calculated stack alignment for this environment.
Returns a native register size of this architecture.
Sets the architecture to arch
.
Sets the sub-architecture to subArch
.
Sets the vendor to vendor
.
Sets the platform to platform
.
Sets the ABI to platformABI
.
Sets the object format to objectFormat
.
Sets floating point ABI to floatABI
.
Tests whether the given architecture arch
is 32-bit.
Tests whether the given architecture arch
is 64-bit.
Tests whether the given architecture arch
is little endian.
Tests whether the given architecture arch
is big endian.
Tests whether the given architecture is Thumb or Thumb_BE.
Tests whether the given architecture is ARM or ARM_BE.
Tests whether the given architecture is AArch64 or AArch64_BE.
Tests whether the given architecture is MIPS32_LE or MIPS32_BE.
Tests whether the given architecture is MIPS64_LE or MIPS64_BE.
Tests whether the given architecture family is X86 or X64.
Tests whether the given architecture family is AArch32 (ARM or THUMB).
Tests whether the given architecture family is AArch64.
Tests whether the given architecture family is ARM, THUMB, or AArch64.
Tests whether the given architecture family is MIPS or MIPS64.
Tests whether the given architecture family is RISC-V (both 32-bit and 64-bit).
Returns a native general purpose register size from the given architecture.
Architecture.
Sub-architecture type.
Vendor type.
Platform.
Platform ABI.
Object format.
Floating point ABI.
Reserved for future use, must be zero.