gpt4 book ai didi

c - float - 绝对值 - 内联汇编 - 编辑的新代码

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:52 27 4
gpt4 key购买 nike

我写了一个名为 absD 的函数,我想返回它的参数的绝对值..我在 cygwin 中使用 GCC 内联汇编..

我不明白为什么它不起作用。我正在加载到内存中。然后进入 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
~ $

没有输出它的绝对值...谢谢..

最佳答案

它完全有效..!!你只是忘了给 argv 赋值。你可以用这样的东西运行程序:

./a3 -1.3

它应该返回 1.3

在发布到这里之前你已经完成了......

关于c - float - 绝对值 - 内联汇编 - 编辑的新代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com