Система команд x64

Тема в разделе "WASM.X64", создана пользователем Mikl___, 20 сен 2025.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.111

    POPCNT

    (Population count) — подсчет количества бит со значением 1 — процессорная команда, которая используется для эффективного поиска в большом объёме данных. Команда подсчитывает количество бит множества в объекте данных

    LZCNT

    LZCNT — команда микропроцессора, которая подсчитывает количество ведущих нулевых битов в исходном операнде (втором операнде) и возвращает результат в место назначения (первый операнд).
    Варианты команды LZCNT:
    • LZCNT r16, r/m16 — подсчитывает количество нулевых битов в r/m16 и возвращает результат в r16.
    • LZCNT r32, r/m32 — подсчитывает количество нулевых битов в r/m32 и возвращает результат в r32.
    • LZCNT r64, r/m64 — подсчитывает количество нулевых битов в r/m64 и возвращает результат в r64.

    TZCNT

    TZCNT — команда микропроцессора, которая подсчитывает количество начальных нулей до наименьшего установленного бита.
    Инструкция входит в набор команд для работы с битами (Bit manipulation instructions).

    BLSMSK

    BLSMSK (Get Mask Up to Lowest Set Bit) — инструкция ассемблера создаёт битовую маску, которая состоит из всех битов 1 до самого младшего установленного бита включительно, остальные биты устанавливает в 0.
    Особенности:
    • Если исходное значение равно 0, BLSMSK устанавливает все биты в регистре назначения в 1 и устанавливает флаг переноса.
    • Размер операнда всегда 32 бита, если не в 64-битном режиме.
    Пример использования: если в регистр rdx поместить число 280 (100011000b), то с помощью BLSMSK в регистр rax будет записано значение 1111 (15).
    Синтаксис: blsmsk regdest, regsrc или blsmsk regdest, varsrc

    BLSI


    BLSI означает «Извлечь изолированный бит с наименьшим набором значений». Находит младший установленный бит во втором операнде (регистре или переменной) и копирует его в той же позиции в первый операнд (целевой регистр). При этом все остальные биты в целевом регистре обнуляются.
    Формат инструкции: BLSI regdest, regsrc или BLSI regdest, varsrc Операнды должны быть одинакового размера и могут быть 32- или 64-битными.

    BLSR


    «Сбросить наименьший установленный бит». Инструкция получает данные из второго операнда, устанавливает наименьший бит в 0 и копирует результат в первый операнд. Если исходный операнд содержит 0, то инструкция копирует 0 в первый операнд и устанавливает флаг переноса. Формат инструкции:
    BLSR regdest, regsrc или BLSR regdest, varsrc. Оба операнда должны быть одинакового размера — 32 или 64

    BZHI

    (Bit Field Extract) — инструкция микропроцессора, которая позволяет извлечь биты из 32- или 64-битного регистра общего назначения. Синтаксис: bextr regdest, regsrc, regctrl или bextr regdest, varsrc, regctrl
    Описание операндов:
    • Первый операнд регистр, в который помещаются извлечённые биты.
    • Второй операнд — источник для извлечения бит, регистр или ячейка в памяти.
    • Третий операнд (regctrl) должен быть регистром и определяет параметры извлечения битов.
    Особенности инструкции:
    • Биты с 0 по 7 в regctrl определяют начальную позицию извлекаемого бита во втором операнде (это должно быть значение в диапазоне от 0 до 31 для 32-битных операндов и от 0 до 63 для 64-битных операндов).
    • Извлечённые биты записываются в регистр назначения, начиная с самого младшего бита.
    • Все более высокие биты в операнде назначения (начиная с позиции LENGTH) устанавливаются в 0.
    • Если биты не извлекаются, регистр назначения очищается.

    BEXTR

    (Bit Field Extract) — инструкция микропроцессора, которая позволяет извлечь биты из 32- или 64-битного регистра общего назначения.
    Синтаксис: bextr regdest, regsrc, regctrl или bextr regdest, varsrc, regctrl.
    Описание операндов:
    • Первый операнд представляет регистр, в который помещаются извлечённые биты.
    • Второй операнд — источник для извлечения бит, может представлять регистр или переменную.
    • Третий операнд (regctrl) должен быть регистром и определяет параметры извлечения битов.
    Особенности инструкции:
    • Биты с 0 по 7 в regctrl определяют начальную позицию извлекаемого бита во втором операнде (это должно быть значение в диапазоне от 0 до 31 для 32-битных операндов и от 0 до 63 для 64-битных операндов).
    • Извлечённые биты записываются в регистр назначения, начиная с самого младшего бита.
    • Все более высокие биты в операнде назначения (начиная с позиции LENGTH) устанавливаются в 0.
    • Если биты не извлекаются, регистр назначения очищается.

    PDEP

    (Parallel Bits Deposit) — команда микропроцессора, которая означает «Внесение параллельных битов».
    Смежные биты младшего порядка копируются в выбранные биты назначения, а другие биты назначения очищаются.
    Команда принимает два входных сигнала, один из которых является источником, а другой — селектором. Селектор представляет собой растровое изображение, которое выбирает биты, которые нужно упаковать или распаковать.
    Инструкция может использоваться для извлечения любого битового поля входных данных и для выполнения большого количества операций перетасовки на битовом уровне.
    Доступны 32-разрядная и 64-разрядная версии.

    PEXT

    (Parallel Bits Extract)— команда микропроцессора. PEXT использует маску во втором исходном операнде (третьем операнде) для переноса смежных или не смежных битов из первого исходного операнда (второго операнда) в смежные нижние битовые позиции в целевом операнде (первом операнде).
    Для каждого установленного бита в маске PEXT извлекает соответствующие биты из первого исходного операнда и записывает их в смежные нижние биты целевого операнда. Остальные верхние биты целевого операнда обнуляются.
     
    Последнее редактирование: 21 сен 2025