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

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

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

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

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

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

  • Какие платформы часто используют Linux, помимо x86?
  • Есть ли команда или метод (кроме RTFM), чтобы определить, есть ли в BIOS UEFI BIOS?
  • Где указан максимальный размер процесса?
  • получив сообщение «из раздела» после установки GRUB 2. Что происходит?
  • Перезагрузка Debian Wheezy вместо отключения питания
  • Открытие устройства TUN из QEmu x86 для ARMv7 не выполняется
  • как турбо увеличить мой процессор на Ubuntu?
  • Инструмент самосвалов CPU MSR
  • 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).

    Linux и Unix - лучшая ОС в мире.