는 내가 .. Cygwin에서와부동 소수점 - 절대 값 - 인라인 어셈블리 - 편집 새로운 코드
I를 GCC 인라인 어셈블리를 사용하고 난 인수의 절대 값을 반환 할 absD라는 함수 .. 를 썼다 왜 작동하지 않는지 보지 마라. 메모리에로드 중입니다. 그렇다면 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;
}
출력입니다 : 는
이를 heres 코드 다음 오류가 주셔서 감사합니다 ..
~ $ gc a3
gcc -Wall -g a3.c -o a3
~ $ ./a3
Absolute value
abs(0.000) = 0.000
~ $
는 절대 값을 출력 (outputting)하지
이 ... 감사합니다
이유는 단지 '가 포함되지 ... :이 같은 뭔가 프로그램을 실행할 수 있습니다 math.h'를 사용하고'fabs() '를 사용합니까? 일반적으로 여기에있는 것보다 일반적으로 빠릅니다. 더 빠르게 진행하려면 GCC 고유의 내장 함수'__builtin_fabs()'를 사용하십시오. –
I cant use Math.h –
0의 절대 값은 0입니다. 뭐가 문제 야? –