МИЭТ, СПИНТех, КАИ |
Ассемблерные вставки в программу на языке |
8 / 15 |
Внешние метки
Обращение: %`<номер с 0> (префикс %` = label, не %L)
Описание: <метка> (псевдоним указать нельзя)
asm goto (
"btl %[BitIdx], %[Val]\n\t" "jc %l2"
:: [Val]"r" (foo), [BitIdx]"r" (bar)
:"cc"
:carry
);
return 0; carry: return 1;
Команда bt извлекает [BitIdx]-й бит числа [V al] во флаг CF
Обращение к метке %l2 это %` 2, а не двенадцать!
Выход, вход, clobbers, метки |
Внешние метки |
asm goto |
Практическое использование |
Определение поддержки AVX-инструкций |
Условные команды |
|
МИЭТ, СПИНТех, КАИ |
Ассемблерные вставки в программу на языке |
9 / 15 |
Определение поддержки AVX-инструкций
asm goto ( "cpuid\n"
"test $(1 << 28), %%ecx\n" "jnz %l1\n"
"test $(1 << 20), %%ecx\n" "jnz %l2\n"
:: "a"(1)
:"ebx", "ecx", "edx", "cc"
:has_avx, has_sse4
);
puts("нет ни SSE4, ни AVX"); has_avx:
func_avx(); return 0;
has_sse4: func_sse(); return 0;
Выход, вход, clobbers, метки |
Внешние метки |
asm goto |
Практическое использование |
Определение поддержки AVX-инструкций |
Условные команды |
|