Я пытаюсь проверить наличие ошибки в RDRAND и RDSEED, используя встроенную сборку в стиле MSVC. Если я правильно помню, в регистре хранится флаг отказа, но я не могу вспомнить, какой именно. Я видел пример на веб-сайте Intel
asm volatile ("rdrand %0; setc %1"
: "=r" (*rand), "=qm" (ok));
где "=qm" и "ok" указывают на сбой, если они не равны 1, но я относительно не знаком со встроенной сборкой в стиле GCC, поэтому я не знаю, что означает "=qm", и я не смог понять это из. Как определить успех или неудачу встроенной сборки в стиле MSVC?
Заранее спасибо.
CF
(см. справочник по набору инструкций). Этот код просто используетsetc
для передачи его в выходной операнд. PS: вместо этого вы должны использовать встроенный, если он доступен. - person Jester   schedule 03.04.2018setc
как в коде. Просто дайте ему операнд, где вы хотите результат. - person Jester   schedule 03.04.2018_rdrand32_step
(или 16 или 64) было бы лучше, если бы оно было доступно (вimmintrin.h
). - person 1201ProgramAlarm   schedule 03.04.2018