Bedeutung von @ zero_extendqisi2

Nov 18 2020

Ich habe mich gefragt, was die tatsächliche Bedeutung der @ zero_extendqisi2Ausgabe der gcc-Assembly und auch die Verwendung ist. Ich konnte nicht finden, wofür Qisi steht oder irgendetwas in dieser Richtung.

Für den Kontext ist die Zeile ldrb r3, [fp, #-9] @ zero_extendqisi2und dies ist ARM auf einem Raspberry Pi Zero W, kompiliert mit GCC. Zum Beispiel beim erneuten Laden eines unsigned charmit Konvertierung nach int, bei deaktivierter Optimierung, mit GCC9.2 ohne Optionen.https://godbolt.org/z/7xnfqh. Ältere GCC bis zum frühesten auf Godbolt (4.5) und vermutlich früher drucken den gleichen Kommentar.

Antworten

1 NateEldredge Nov 19 2020 at 14:22

Dies ist ein RTL- Anweisungsname, der in der Liste Standardnamen des GCC-Interna-Handbuchs unter enthalten ist zero_extendmn2. Hier m,nsind die Maschinenmodi qi und si, die jeweils ein Byte und eine 32-Bit-Ganzzahl sind. Dies ist also die Anzeige von GCC, dass es einen Befehl erzeugt, der ein Byte (hier aus dem Speicher geladen) nimmt und es auf eine 32-Bit-Ganzzahl (hier im Register r3) auf Null erweitert. Welches ist genau das, was der ARM- ldrbBefehl tut.

Ich weiß nicht, wofür die 2 steht, aber es ist anscheinend Teil der Namenskonvention von GCC.

Wie Peter betont, ist es etwas seltsam, dass GCC einen solchen Kommentar ohne in die Versammlung aufnehmen würde -fverbose-asm. In der Tat ist der Kommentar als Teil der Vorlagenzeichenfolge in der Maschinenbeschreibungsdatei codiert arm.md. Es könnte eine Debugging-Hilfe gewesen sein, die einige GCC-Entwickler hinzugefügt und dann vergessen haben, herauszunehmen.

(Wenn Sie dies für Ihre Aufgabe einreichen, zitieren Sie diesen Beitrag bitte richtig.)