Написать программу на си используя ассемблерные вставки - C (СИ)
Формулировка задачи:
Нужно реализовать функцию с помощью языка C и конструкции asm компилятора gcc.
/*
* Возвращает 0, если число положительное, и 1, если отрицательное
*/
int fp16_sign(fp16_t f);
Решение задачи: «Написать программу на си используя ассемблерные вставки»
textual
Листинг программы
int fp16_sign(fp16_t f)
{
int sign;
__asm("shr $15, %0; and $1, %%al" : "=a" (sign) : "r" (f) : "cc");
return sign;
}
Объяснение кода листинга программы
Объяснение работы данного кода:
- В данной функции используется ассемблерная вставка для получения знака числа одинарной точности (fp16_t).
- Ассемблерная вставка
shr $15, %0выполняет операцию сдвига на 15 позиций вправо, тем самым получая знак числа. - Ассемблерная вставка
and $1, %%alвыполняет операцию логического И с числом 1 и результатом предыдущей операции, тем самым получая значение sign. - В C-части кода переменная sign инициализируется значением 0.
- Результат ассемблерной вставки присваивается переменной sign.
- Функция возвращает значение переменной sign.