Как использовать сборку ARM64 для выполнения операций с плавающей запятой, таких как сложение, вычитание, умножение и деление?
Я пытался
static double __attribute__((naked, pure)) MyASMAdd(double sub1, double sub2) {
#ifndef __arm__
asm(" ADD x0, x0, x1");
asm(" RET");
#endif
}
Как и выше, если я использую два double или float операций, результатом всегда будет первый параметр, такой как 3.2 + 4.6, который должен быть равен 7.8, но ответ - 3.2. В других случаях тоже. Но если я использую int для обоих аргументов, я могу получить желаемый результат。
static int __attribute__((naked, pure)) MyASMAdd(int sub1, int sub2) {
#ifndef __arm__
asm(" ADD x0, x0, x1");
asm(" RET");
#endif
}