嗨,我正在为嵌入式系统实现一些定点数学东西,我正在尝试将两个 16.16 定点数相乘而不创建 64 位临时数。到目前为止,这是我想出的生成最少指令的代码。
int multiply(int x, int y){
int result;
long long temp = x;
temp *= y;
temp >>= 16;
result = temp;
return result;
}
这段代码的问题在于它使用了一个临时的 64 位整数,这似乎会生成错误的汇编代码。我正在尝试制作一个使用两个 32 位整数而不是 64 位整数的系统。有人知道怎么做吗?