Il mio processore è a 32 o 64 bit?

Sep 10 2020

Da non confondere con Il mio sistema operativo è a 32 o 64 bit .

Questo è molto semplice, dimmi se la mia CPU supporta o meno le istruzioni a 64 bit. Se la mia CPU supporta istruzioni a 32 bit, stampa "32", se la mia CPU supporta istruzioni a 64 bit, stampa "64", se il mio processore supporta ingenuamente altre lunghezze di istruzioni, stampa "altro".

Il programma deve essere eseguito su entrambe le modalità di istruzione a 32 e 64 bit e, se interpretato correttamente, eseguire correttamente su interpreti a 32 e 64 bit.

Casi test:

Arco: x86, i386, i686, RiscV32
Uscita: '32'

Arch: x86-64, x64, x86_64, RiscV64
Output: '3264'

Arco: R700
Uscita '32other'

Si applicano le solite regole del code-golf .

Buona fortuna!

Risposte

3 Neil Sep 10 2020 at 15:08

Bash + coreutils, 33 25 byte

lscpu|grep -Po '..(?=-b)'

Non provarlo online! Non funzionerà perché la sandbox TIO non supporta lscpu. Modifica: 8 byte salvati grazie a @DigitalTrauma.

1 TehPers Sep 11 2020 at 00:22

Ruggine , 45 byte

||if std::usize::MAX>4294967295{3264}else{32}

Provalo online! (Cross-compilazione per i 32 bit a livello locale con l'installazione di una toolchain per i686 Ad esempio:. stable-i686-pc-windows-msvc)

Non è possibile testarlo su architetture che supportano istruzioni di "altre" lunghezze, ma può essere utilizzato per verificare architetture a 32 o 64 bit. Questo è più breve del modo integrato che utilizza cfg!(target_pointer_width="64").