Ich probiere die neuen arm64-Anweisungen auf iOS aus und habe ein eigenartiges Problem. Ich hoffe, jemand kann mir dabei helfen.
Insbesondere schlägt dies mit 'Ungültige Operanden für die Anweisung' fehl
void test()
{
register long long signed int r=0,c=0,d=0;
register signed int a=0,b=0,e=0,f=0;
// dies schlägt fehl
asm volatile("smaddl %0, %1, %2, %3" : "=r"(r) : "r"(a), "r"(b), "r"(c));
};
Ich bin mir nicht sicher, was ich falsch mache, soweit ich das beurteilen kann, befolge ich die Anweisung und Syntax korrekt. Hier ist, wie es in den Dokumenten definiert ist:
"SMADDL Xd, Wn, Wm, Xa Signed Multiply-Add Long: Xd = Xa + (Wn × Wm), wobei die Quelloperanden als vorzeichenbehaftet behandelt werden."
wobei X ein 64-Bit-Register bezeichnet und W ein 32-Bit-Register.
Jede Hilfe wird geschätzt.
Danke