2010-03-09 5 views
8

Heyo,Keine Etikettennamen mehr in der Baugruppe

Meine Klasse auf der Universität hat uns Programme in der Montage schreiben. Ich habe die Leichtigkeit von C bis jetzt nie wirklich geschätzt.

Nun, wenn ich in der Montage zu programmieren, muss ich oft während machen/zu/wenn Schleifen und Bedingungen mit Etiketten zB:

SKIP: 
    ... 
COMP:ADD R1, R1, #0 ;Check for equality 
    BRZ WHILEEND 
    ...   ;code inside the while loop 
    JMP COMP  ;Return to while loop 
WHILEEND: 
    ... 

Also, in diesem while-Schleife (Beispiel) I 1 Etikett verwendet haben für das Unterprogramm und 2 mehr für die Schleife selbst. Ich habe keine guten Labels mehr für alle Schleifen und Zweige, die ich in der Montage mache. Was macht ihr, um es abwechslungsreich und anschaulich zu halten?

Antwort

11

meisten Montierer erlauben lokale Etikett:

routine_1: 
    ... 
.loop: 
    ... 
    jne .loop 

routine_2: 
    ... 
.loop: 
    ... 
    jne .loop 
    ... 
    jmp routine_1.loop 

oder anonyme Etiketten, wo Sie die gleichen Namen und Referenz „am nächsten rückwärts“ oder „am nächsten vorwärts“ wiederverwenden können:

routine_1: 
    ... 
@@: 
    ... 
    jne @b 

routine_2: 
    ... 
@@: 
    ... 
    jne @b 

(b für rückwärts)

Wenn weder in Ihrem Assembler unterstützt wird, nehme ich an Sie alle lokalen Etiketten mit dem Etikett der Routine in Frage Präfix könnten:

routine_1: 
    ... 
routine_1.loop: 
    ... 
    jne routine_1.loop 
2

In vielen Assembler können Sie mehrere Beschriftungen mit demselben (normalerweise numerischen) Namen erstellen. Mit dieser Funktion können Sie Etiketten für Ihre Schleifen wiederverwenden, indem Sie mit jmp 1f zum nächsten Etikett 1 oder jmp 1b springen, um zum nächsten Etikett 1 zurückzuspringen.

+0

Das wäre schön, aber mein Assembler ist ein Anfänger einer (LC3), so dass won arbeite nicht. Aber ich denke, ich kann einfach generische Namen selbst verwenden. 'While1' 'wend1' 'if1' 'ifend2' etc etc ... – user289293

+0

Ich habe versucht herauszufinden, wofür diese 'b' und' f' Suffixe stehen. Ich habe fast eine Stunde dafür gebraucht. Endlich habe ich meine Antwort hier bekommen. Vielen Dank :) – dirtybit