Я пытаюсь написать функцию с именем absD, которая возвращает абсолютное значение своего аргумента.
Я не хочу использовать какие-либо предопределенные функции. Прямо сейчас я получаю ошибку разбора, когда пытаюсь скомпилировать ее.
Я бы изобразил все, что мне нужно сделать, чтобы получить абсолютное значение типа double, это изменить бит знака? это то, что у меня есть
#include <stdio.h>
#include <stdlib.h>
#define PRECISION 3
double absD (double n)
{
asm(" fld %eax \n"
" movl $0x7FFFFFFFFFFFFFFF, %eax \n"
" pop %eax \n"
);
return n;
}
int main (int argc, char **argv)
{
double n = 0.0;
printf("Absolute value\n");
if (argc > 1)
n = atof(argv[1]);
printf("abs(%.*f) = %.*f\n", PRECISION, n, PRECISION, absD(n));
return 0;
}
Я исправил фигурную скобку ..
я получаю ошибку
~ $ gc a02
gcc -Wall -g a02.c -o a02
/tmp/ccl2H7rf.s: Assembler messages:
/tmp/ccl2H7rf.s:228: Error: suffix or operands invalid for `fld'
/tmp/ccl2H7rf.s:229: Error: missing or invalid immediate expression `0x7FFFFFFFF
FFFFFFF'
~ $