Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
23.11.2024
Размер:
405 Кб
Скачать

МИЭТ, СПИНТех, КАИ

Ассемблерные вставки в программу на языке

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-инструкций

Условные команды

 

Соседние файлы в папке АВС