单片机/MCU论坛
直播中

五斤麻辣油

8年用户 1188经验值
擅长:电源/新能源
私信 关注

如何用C代码编写asm来对浮点进行宽负载?

我想用 ld.d 在 c 代码中加载两个浮点数。 我怎么 CAN 这样做? 谢谢,仙居
                                                                                                                                                                                                     

回帖(1)

李欢

2024-1-29 17:19:24
要在C代码中使用asm指令加载两个浮点数,可以使用内联汇编语法。具体实现方法如下:

```c
#include

int main() {
    double a, b;

    asm("ld.d %[result], 0(%[address])"
        : [result] "=f" (a)
        : [address] "r" (&b));

    printf("a = %lfn", a);
    printf("b = %lfn", b);

    return 0;
}
```

在上述代码中,使用了`ld.d`指令来加载一个双精度浮点数。需要注意的是,使用`%[result]`和`%[address]`来作为占位符,用于指定`ld.d`指令的参数。使用`"=f"`和`"r"`来指定操作数的限定符,其中`"=f"`表示将结果存储到浮点寄存器中,`"r"`表示使用通用寄存器传递地址。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分