Debian: какие инструкции используют двоичные файлы x86-64?

Я хотел бы знать, используют ли бинарные файлы (скомпилированные для) специальные наборы инструкций, такие как SSE 4.1 / 4.2, AVX, F16C или нет. Как я могу узнать, использует ли бинар в пакете определенные наборы инструкций?

Я знаю, что я могу включить такие инструкции с configure переключателей configure при компиляции пакетов вручную, но при использовании предварительно скомпилированных пакетов из репозитория Debian должен быть установлен по умолчанию.

Вероятно, двоичные файлы не скомпилированы со слишком определенными наборами команд, потому что они не могут использоваться в какой-либо системе или, в зависимости от двоичного, они скомпилированы с альтернативными подпрограммами, которые «эмулируют» обработку базовыми инструкциями для поддержки процессоров, не имеющих таких функций.

Я знаю, что я могу посмотреть в файл rules исходного пакета Debian, но мне интересно, если есть более простой способ сделать это.

  • Являются ли инструкции процессора бинарной машиной x86-64 очень ограниченными?
  • В пакетах May используются довольно конкретные наборы инструкций, могут ли они иметь резервные копии, используя более примитивные инструкции?

One Solution collect form web for “Debian: какие инструкции используют двоичные файлы x86-64?”

Чтобы ответить на ваш вопрос в целом, https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux дает скрипт, который можно загрузить разобранным бинарный (выход objdump ) и попытается выяснить минимально необходимый набор команд. Этот метод обязательно является приблизительным, так как данный двоичный файл может иметь разные пути выполнения в зависимости от доступного набора команд, и такой двоичный код, по-видимому, требует, чтобы «лучший» набор команд поддерживал его, даже если он действительно может работать без него.

В частности, в отношении пакетов Debian все, что упаковано для amd64 (64-разрядный набор инструкций «ПК»), должно работать на любом AMD64 или x86-64-совместимом процессоре; это означает, что он может использовать полный стандартный 64-битный набор команд, который включает SSE2, но он может использовать только другие функции (включая перечисленные вами), если он обеспечивает резервные копии для процессоров, которые их не поддерживают. Существуют исключения, но пакеты должны указывать, что в описании пакета (см., Например, rr ).

Ядро Linux может адаптировать свои функции к функциям процессора, на котором он работает. Если он скомпилирован для x86-64, он предполагает, что он может использовать TSC, CMPXCHG64, CMOV (ищите все, что зависит от X86_64 по этой ссылке). Но его можно скомпилировать для проверки во время выполнения, доступны ли такие функции, как AES-NI, AVX, AVX2, и использовать их, в частности, для ускорения криптовычислений. Это может принести пользу любой программе, использующей эти функции (ценой переключения контекста в ядро).

В некоторых случаях динамический компоновщик также может помочь обеспечить альтернативы в зависимости от процессора: libc6-i686 предоставляет набор библиотек для архитектуры i386 который будет использоваться автоматически вместо эквивалентов bare-bones на процессорах, совместимых с набором команд i686 ( и поддержка CMOV).

  • Как отличить v2 и v3 от процессоров Xeon?
  • Приложения для Linux и Android на ARM vs x86
  • Будет ли большинство Distros работать на старый pentium d?
  • Использование ABI_X86 в Gentoo
  • Debian x86_64 и 4 ГБ оперативной памяти
  • Флаги компилятора для mplayer2 для оптимизации его для старого оборудования
  • как турбо увеличить мой процессор на Ubuntu?
  • Lubuntu 16.10 (32-разрядная, i386) загрузка на Dell Inspiron 1525
  • Используя ip, что означает M-DOWN?
  • Какую архитектуру процессора Fedora выбрать? i386 или i686?
  • Как запустить Ubilinux / u-boot под qemu (x86)
  • Какие проблемы, связанные с UEFI, мне нужно искать при получении компьютера x86 для Linux?
  • Linux и Unix - лучшая ОС в мире.