Codegolf — Мой Процессор 32- Или 64-Разрядный?

  • Автор темы Laregorisog3
  • Обновлено
  • 20, Oct 2024
  • #1

Не путать с Моя ОС 32-битная или 64-битная?.

Это очень просто: скажите мне, поддерживает ли мой процессор 64-битные инструкции. Если мой процессор поддерживает 32-битные инструкции, выведите «32», если мой процессор поддерживает 64-битные инструкции, выведите «64», если мой процессор наивно поддерживает инструкции другой длины, выведите «other».

Ваша программа должна работать как в 32-, так и в 64-битном режиме команд и, если она правильно интерпретируется, работать как в 32-, так и в 64-битном интерпретаторе.

Тестовые случаи:

Арка: x86, i386, i686, RiscV32
Выход: '32'

Арка: x86-64, x64, x86_64, RiscV64
Вывод: '3264'

Арка: 700р.
Вывод «32other»

Применяются обычные правила.

Удачи!

#код-гольф #код-гольф #проблема-решение

Laregorisog3


Рег
21 Jun, 2010

Тем
62

Постов
197

Баллов
527
  • 26, Oct 2024
  • #2

Баш + coreutils, 33 25 байт

 
 cfg!(target_pointer_width="64") 

Не пробуйте это онлайн! Не будет работать, поскольку песочница TIO не поддерживает lscpu. Изменить: сэкономлено 8 байт благодаря @DigitalTrauma.

 

Pseupsnar


Рег
04 Jul, 2010

Тем
73

Постов
219

Баллов
624
  • 26, Oct 2024
  • #3

Ржавчина, 45 байт

stable-i686-pc-windows-msvc

Попробуйте онлайн! (Выполните кросс-компиляцию для 32-разрядной версии локально, установив набор инструментов для i686. Например: ||if std::usize::MAX>4294967295{3264}else{32} )

Невозможно проверить это на каких-либо архитектурах, которые поддерживают инструкции «другой» длины, но это можно использовать для проверки 32-битных или 64-битных архитектур. Это короче, чем встроенный способ с использованием lscpu|grep -Po '..(?=-b)' .

 

Lyra53


Рег
07 Mar, 2005

Тем
71

Постов
197

Баллов
562
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно