Enum symbolic_common::Arch
source · #[repr(u32)]
#[non_exhaustive]
pub enum Arch {
Show 29 variants
Unknown,
X86,
X86Unknown,
Amd64,
Amd64h,
Amd64Unknown,
Arm,
ArmV5,
ArmV6,
ArmV6m,
ArmV7,
ArmV7f,
ArmV7s,
ArmV7k,
ArmV7m,
ArmV7em,
ArmUnknown,
Arm64,
Arm64V8,
Arm64e,
Arm64Unknown,
Ppc,
Ppc64,
Mips,
Mips64,
Arm64_32,
Arm64_32V8,
Arm64_32Unknown,
Wasm32,
}
Expand description
An enumeration of CPU architectures and variants.
The architectues are grouped into families, which can be retrieved by cpu_family
. There are
*Unknown
variants for each architecture to maintain forward-compatibility. This allows to
support architectures where the family is known but the subtype is not.
Each architecture has a canonical name, returned by Arch::name
. Likewise, architectures can
be parsed from their string names. In addition to that, in some cases aliases are supported. For
instance, "x86"
is aliased as "i386"
.
This enumeration is represented as u32
for C-bindings and lowlevel APIs. The values are
grouped by CPU family for forward compatibility.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Unknown
X86
X86Unknown
Amd64
Amd64h
Amd64Unknown
Arm
ArmV5
ArmV6
ArmV6m
ArmV7
ArmV7f
ArmV7s
ArmV7k
ArmV7m
ArmV7em
ArmUnknown
Arm64
Arm64V8
Arm64e
Arm64Unknown
Ppc
Ppc64
Mips
Mips64
Arm64_32
Arm64_32V8
Arm64_32Unknown
Wasm32
Implementations§
source§impl Arch
impl Arch
sourcepub fn from_u32(val: u32) -> Arch
pub fn from_u32(val: u32) -> Arch
Creates an Arch
from its u32
representation.
Returns Arch::Unknown
for all unknown values.
Examples
use symbolic_common::Arch;
// Will print "X86"
println!("{:?}", Arch::from_u32(101));
sourcepub fn cpu_family(self) -> CpuFamily
pub fn cpu_family(self) -> CpuFamily
Returns the CPU family of the CPU architecture.
Examples
use symbolic_common::Arch;
// Will print "Intel32"
println!("{:?}", Arch::X86.cpu_family());
sourcepub fn name(self) -> &'static str
pub fn name(self) -> &'static str
Returns the canonical name of the CPU architecture.
This follows the Apple conventions for naming architectures. For instance, Intel 32-bit
architectures are canonically named "x86"
, even though "i386"
would also be a valid
name.
For architectures with variants or subtypes, that subtype is encoded into the name. For instance the ARM v7-M architecture is named with a full `“armv7m”.
Examples
use symbolic_common::Arch;
// Will print "x86"
println!("{}", Arch::X86.name());
sourcepub fn well_known(self) -> bool
pub fn well_known(self) -> bool
Returns whether this architecture is well-known.
This is trivially true
for all architectures other than the *Unknown
variants.
Examples
use symbolic_common::Arch;
assert!(Arch::X86.well_known());
assert!(!Arch::X86Unknown.well_known());
Trait Implementations§
source§impl<'de> Deserialize<'de> for Arch
impl<'de> Deserialize<'de> for Arch
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
source§impl Ord for Arch
impl Ord for Arch
source§impl PartialOrd<Arch> for Arch
impl PartialOrd<Arch> for Arch
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more