こんにちは、組み込みシステム用の固定小数点演算を実装しています。64 ビットの一時ファイルを作成せずに、2 つの 16.16 固定小数点数の乗算を実行しようとしています。これまでのところ、最小の命令を生成するコードを思いつきました。
int multiply(int x, int y){
int result;
long long temp = x;
temp *= y;
temp >>= 16;
result = temp;
return result;
}
このコードの問題は、一時的な 64 ビット整数を使用しているため、不適切なアセンブリ コードが生成されるように見えることです。64 ビット整数の代わりに 2 つの 32 ビット整数を使用するシステムを作成しようとしています。誰でもこれを行う方法を知っていますか?