assembly 如何将此C代码转换为RISC-V rv 64 i汇编代码?

pcww981p  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(204)
int function (float X, float Y, float Z, int result) 
{
    result = (X*Y)+ Z;
    
    
}

我尝试使用https://godbolt.org/,但它不支持rv64i

f0brbegy

f0brbegy1#

您的代码已损坏,但假设它是这样编写的:

float function (float X, float Y, float Z) 
{
   return (X*Y) + Z;    
}

同样,假设你有一个浮点单元,也就是说你使用的是rv64ifrv64id设备,那么下面的汇编代码就可以完成这项工作:

function:
    fmul.s ft0, fa0, fa1
    fadd.s fa0, ft0, fa2
    ret

不幸的是,您使用的rv64i设备没有浮点单元。一个普通的C编译器会提供许多子例程来执行各种浮点操作,检查它们名称的最好方法是编译程序。
如果你打算自己写子程序,你就是在做一项猛犸的任务,因为一个有经验的汇编程序员可能需要几周,如果不是几个月的话。

相关问题