use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Arch {
M32,
Sparc,
I386,
M68K,
M88K,
I860,
Mips,
S370,
MipsRs3Le,
PaRisc,
Vpp500,
Sparc32Plus,
I960,
Ppc,
Ppc64,
S390,
V800,
Fr20,
Rh32,
Rce,
Arm,
Alpha,
Sh,
SparcV9,
Tricore,
Arc,
H8300,
H8300H,
H8S,
H8500,
Ia64,
MipsX,
ColdFire,
M68Hc12,
Mma,
Pcp,
Ncpu,
Ndr1,
StarCore,
Me16,
St100,
TinyJ,
X86_64,
Pdsp,
Pdp10,
Pdp11,
Fx66,
St9Plus,
St7,
M68Hc16,
M68Hc11,
M68Hc08,
M68Hc05,
Svx,
St19,
Vax,
Cris,
Javelin,
FirePath,
Zsp,
Mmix,
Huany,
Prism,
Avr,
Fr30,
D10V,
D30V,
V850,
M32R,
Mn10300,
Mn10200,
PicoJava,
OpenRisc,
ArcA5,
Xtensa,
VideoCore,
TmmGpp,
Ns32K,
Tpc,
Snp1K,
St200,
Blackfin,
Unicore,
AlteraNios2,
TIC6000,
Hexagon,
NDS32,
AArch64,
TILEPro,
Microblaze,
TILEGx,
ARCv2,
RISCV,
BPF,
CSKY,
LoongArch,
FRV,
}
impl fmt::Display for Arch {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let desc = match self {
Self::M32 => "AT&T WE 32100",
Self::Sparc => "SPARC",
Self::I386 => "Intel 80386",
Self::M68K => "Motorola 68000",
Self::M88K => "Motorola 88000",
Self::I860 => "Intel 80860",
Self::Mips => "MIPS I Architecture",
Self::S370 => "IBM System/370 Processor",
Self::MipsRs3Le => "MIPS RS3000 Little-endian",
Self::PaRisc => "Hewlett-Packard PA-RISC",
Self::Vpp500 => "Fujitsu VPP500",
Self::Sparc32Plus => "Enhanced instruction set SPARC",
Self::I960 => "Intel 80960",
Self::Ppc => "PowerPC",
Self::Ppc64 => "64-bit PowerPC",
Self::S390 => "IBM System/390 Processor",
Self::V800 => "NEC V800",
Self::Fr20 => "Fujitsu FR20",
Self::Rh32 => "TRW RH-32",
Self::Rce => "Motorola RCE",
Self::Arm => "Advanced RISC Machines ARM",
Self::Alpha => "Digital Alpha",
Self::Sh => "Hitachi SH",
Self::SparcV9 => "SPARC Version 9",
Self::Tricore => "Siemens TriCore embedded processor",
Self::Arc => "Argonaut RISC Core, Argonaut Technologies Inc.",
Self::H8300 => "Hitachi H8/300",
Self::H8300H => "Hitachi H8/300H",
Self::H8S => "Hitachi H8S",
Self::H8500 => "Hitachi H8/500",
Self::Ia64 => "Intel IA-64 processor architecture",
Self::MipsX => "Stanford MIPS-X",
Self::ColdFire => "Motorola ColdFire",
Self::M68Hc12 => "Motorola M68HC12",
Self::Mma => "Fujitsu MMA Multimedia Accelerator",
Self::Pcp => "Siemens PCP",
Self::Ncpu => "Sony nCPU embedded RISC processor",
Self::Ndr1 => "Denso NDR1 microprocessor",
Self::StarCore => "Motorola Star*Core processor",
Self::Me16 => "Toyota ME16 processor",
Self::St100 => "STMicroelectronics ST100 processor",
Self::TinyJ => "Advanced Logic Corp. TinyJ embedded processor family",
Self::X86_64 => "AMD x86-64 architecture",
Self::Pdsp => "Sony DSP Processor",
Self::Pdp10 => "Digital Equipment Corp. PDP-10",
Self::Pdp11 => "Digital Equipment Corp. PDP-11",
Self::Fx66 => "Siemens FX66 microcontroller",
Self::St9Plus => "STMicroelectronics ST9+ 8/16 bit microcontroller",
Self::St7 => "STMicroelectronics ST7 8-bit microcontroller",
Self::M68Hc16 => "Motorola MC68HC16 Microcontroller",
Self::M68Hc11 => "Motorola MC68HC11 Microcontroller",
Self::M68Hc08 => "Motorola MC68HC08 Microcontroller",
Self::M68Hc05 => "Motorola MC68HC05 Microcontroller",
Self::Svx => "Silicon Graphics SVx",
Self::St19 => "STMicroelectronics ST19 8-bit microcontroller",
Self::Vax => "Digital VAX",
Self::Cris => "Axis Communications 32-bit embedded processor",
Self::Javelin => "Infineon Technologies 32-bit embedded processor",
Self::FirePath => "Element 14 64-bit DSP Processor",
Self::Zsp => "LSI Logic 16-bit DSP Processor",
Self::Mmix => "Donald Knuth's educational 64-bit processor",
Self::Huany => "Harvard University machine-independent object files",
Self::Prism => "SiTera Prism",
Self::Avr => "Atmel AVR 8-bit microcontroller",
Self::Fr30 => "Fujitsu FR30",
Self::D10V => "Mitsubishi D10V",
Self::D30V => "Mitsubishi D30V",
Self::V850 => "NEC v850",
Self::M32R => "Mitsubishi M32R",
Self::Mn10300 => "Matsushita MN10300",
Self::Mn10200 => "Matsushita MN10200",
Self::PicoJava => "picoJava",
Self::OpenRisc => "OpenRISC 32-bit embedded processor",
Self::ArcA5 => "ARC Cores Tangent-A5",
Self::Xtensa => "Tensilica Xtensa Architecture",
Self::VideoCore => "Alphamosaic VideoCore processor",
Self::TmmGpp => "Thompson Multimedia General Purpose Processor",
Self::Ns32K => "National Semiconductor 32000 series",
Self::Tpc => "Tenor Network TPC processor",
Self::Snp1K => "Trebia SNP 1000 processor",
Self::St200 => "STMicroelectronics ST200 microcontroller",
Self::Blackfin => "ADI Blackfin Processor",
Self::Unicore => "UniCore-32",
Self::AlteraNios2 => "Altera Nios II soft-core processor",
Self::TIC6000 => "TI C6X DSPs",
Self::Hexagon => "QUALCOMM Hexagon",
Self::NDS32 => "Andes Technology compact code size embedded RISC processor family",
Self::AArch64 => "ARM 64 bit",
Self::TILEPro => "Tilera TILEPro",
Self::Microblaze => "Xilinx MicroBlaze",
Self::TILEGx => "Tilera TILE-Gx",
Self::ARCv2 => "ARCv2 Cores",
Self::RISCV => "RISC-V",
Self::BPF => "Linux BPF - in-kernel virtual machine",
Self::CSKY => "C-SKY",
Self::LoongArch => "LoongArch",
Self::FRV => "Fujitsu FR-V",
};
f.write_str(desc)
}
}