Gas-Altmacro-Makro mit einem Prozentzeichen in einem Standardparameter schlägt fehl mit "% Operator benötigt absoluten Ausdruck"

Ich möchte ein Makro wie das folgende erstellen:

.altmacro

.macro assert_eq a, b=%eax
    LOCAL ok
    #...
.endm

Zu verwenden als:

assert_eq $1
assert_eq $1, %eax

Ich will.altmacro zumLOCAL (Ich sehe die andere Möglichkeit der Verwendung\@, aber ich möchteLOCAL).

Aber wenn ich versuche, dies zu kompilieren, erhalte ich:

Error: % operator needs absolute expression

Ich vermute, dass dieses Problem dadurch entsteht, dassb=%eax versucht, eine andere Funktion zu verwenden, die von aktiviert wurde.altmacro: Ausdrucksergebnisse als Zeichenfolgen, da ohne.altmacro Ich könnte das ohne Problem schreiben.

Wenn dies zutrifft, wie kann ich das umgehen, damit mein Makro funktioniert? Wenn nicht, was stimmt mit meinem Code nicht?

Bonusfrage: Wie benutzt man%?

GAS-Version: 2.23.52

Antworten auf die Frage(2)

Ihre Antwort auf die Frage