Ich bin derzeit ein Anfänger mit Montage und ich lerne, wie man Assembly Inline mit C für eine Klasse verwendet. Davon abgesehen, ich habe eine harte Zeit mit diesem Fehler habe, wenn ich meine Datei bin Kompilieren:C Inline-Assembly-Label Ausgabe
/tmp/cckHnU89.s: Assembler messages: /tmp/cckHnU89.s:550: Error: symbol `.L16' is already defined /tmp/cckHnU89.s:571: Error: symbol `.L18' is already defined /tmp/cckHnU89.s:576: Error: symbol `.L17' is already defined
Ich habe versucht, die Namen der Etiketten mit anderen Namen zu ersetzen, da ich von der .s-Datei festgestellt, dass Die Labels .L16, .L17 und .L18 werden sowohl in meiner Hauptmethode als auch in einer meiner Funktionen verwendet. Als ich das tat, endete ich jedoch mit einem Segmentierungsfehler beim Ausführen des Programms. Gibt es eine Möglichkeit, die Namen der Etiketten oder etwas anderes zu ändern, das anscheinend ein Namenskonflikt zu sein scheint?
Soweit meine CPU, ich bin mit einem Intel Pentium T4500 Prozessor und ich kompiliere mit GCC-Version 4.4.3. Mein Code ist mehr als 300 Zeilen für den Inline-Montageteil, also werde ich denjenigen verschonen, der dies liest. Im Grunde suche ich nur nach einer allgemeinen Antwort darauf, wie man normalerweise den Namenskonflikt behebt, der den obigen Fehler hervorbringt. Alles, was dazu gehört, wird sehr geschätzt.
Können Sie uns den entsprechenden Code zeigen? Etwas schwer zu sagen, ob wir nichts weiter machen können. – Mysticial
Bitte geben Sie neben dem Code an, für welche CPU Sie kompilieren und welchen C-Compiler Sie verwenden. – user9876
Glauben Sie nicht, dass dies einen Downvote verdient: (1) es ist ein ehrlicher Versuch, die notwendigen Informationen zu liefern, (2) es erklärt, was bereits versucht wurde, das Problem anzugehen, (3) es stellt eine spezifische Frage. –