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

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

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

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

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

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

  • Каково рассеивание мощности процессора и как оно работает?
  • Инструменты разгона в Linux
  • Будет ли большинство Distros работать на старый pentium d?
  • Lubuntu 16.10 (32-разрядная, i386) загрузка на Dell Inspiron 1525
  • Запуск -march оптимизированное программное обеспечение на другой архитектурный проект?
  • Перезагрузка Debian Wheezy вместо отключения питания
  • Что означают флаги в / proc / cpuinfo?
  • Как обнаружить и смягчить эскалацию уязвимости Intel в системе Linux (CVE-2017-5689)?
  • 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).

    Interesting Posts

    Разрешения Unzip (Info-ZIP)

    Сетевая карта Realtek RTL8723BE не работает с операционной системой Chromium

    Как получить доступ к экрану, созданному другими пользователями?

    Как добавить гостевую виртуальную машину KVM в virsh

    Можно ли выполнить код в куче пространства?

    Почему не находит. -delete удалить текущий каталог?

    В чем причина этой конкретной «rm» последовательности в шутке xkcd?

    В чем разница между оболочкой, eshell и термином в Emacs?

    vim: как записывать нормальные команды?

    Как я могу получить общее количество для пространства, используемого группой подкаталогов

    Не удалось apt-get после изменения настроек брандмауэра

    Сравните несколько файлов с файлом ref и распечатайте, если это соответствует

    Утилита для отображения и изменения модулей ядра, загружаемых при запуске системы

    Что кэшируется?

    Как найти все диски и их размер перед их использованием?

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