Я написал функцию с именем absD, которую я хочу вернуть абсолютное значение ее аргумента ..
Я использую встроенную сборку GCC с Cygwin ..
Я не понимаю, почему это не работает. Я загружаю в память. затем в st (0)
где я использую FABS - абсолютное значение. Нужно ли выделять память?
Я пытаюсь изучить ассемблер с C, поэтому, пожалуйста, будьте добры Пожалуйста, дайте мне хорошую помощь.
Спасибо
здесь код, а затем ошибка:
#include <stdio.h>
#include <stdlib.h>
#define PRECISION 3
double absD (double n)
{
asm(
"fldl %[nIn]\n"
"fabs\n"
"fstpl %[nOut]\n"
: [nOut] "=m" (n)
: [nIn] "m" (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 a3
gcc -Wall -g a3.c -o a3
~ $ ./a3
Absolute value
abs(0.000) = 0.000
~ $
Не выводится его абсолютное значение ...
Спасибо ..