Разворачивал в очередной раз Linux-образ на USB-drive (почему-то им оказался Manjaro, но это совсем другая история), и в голову пробрались странные мысли: BIOS увидел флешку, а дальше-то что? Ну да, там MBR, скорее всего GRUB и… А раз в MBR затесался чей-то кастомный код, значит и простой человек из Адыгеи может запрограммировать что-нибудь на «большом» компьютере, но вне операционной системы.
А так как делать такие штуки на языках высокого уровня слишком жирно, а ассемблеров мы не знаем, будем шпарить прямо на опкодах для 8086.
Большинство команд AVX-512 могут использовать операнд-маску, соответствующий одному из 8 масочных регистров (k0–k7). Если масочный регистр используется в качестве маски операции, регистр k0 ведёт себя иначе, чем остальные масочные регистры: в этом случае он выполняет роль жёстко закодированной константы, указывающей, что с данной операцией маска не применяется. Однако в арифметических и логических операциях и при записи значения в масочные регистры k0 ведёт себя как обычный рабочий регистр. В большинстве команд масочные регистры используются в качестве маски, определяющей, какие элементы должны записываться в выходной регистр. Поведение операнда-маски зависит от флага: если он выставлен, все невыбранные элементы будут обнулены (режим «обнуления», zero), если нет – все невыбранные элементы сохраняют прежнее состояние (режим «слияния», merge). Режим слияния даёт тот же эффект, что команды слияния (blend instructions).