.set pseudo-op

Zweck

Legt ein Symbol fest, das einem Ausdruck in Typ und Wert entspricht.

Syntax

Element Beschreibung
.set Name, Ausdruck

Beschreibung

Die Pseudooperation .set setzt das Symbol Name auf den Wert Ausdruck im Typ und im Wert. Die Verwendung der Pseudooperation .set kann helfen, Fehler bei einem häufig verwendeten Ausdruck zu vermeiden. Setzen Sie den Ausdruck mit einem Symbol gleich und verweisen Sie dann auf das Symbol und nicht auf den Ausdruck. Um den Wert des Ausdrucks zu ändern, ändern Sie ihn nur innerhalb der Anweisung .set . Die erneute Assemblierung des Programms ist jedoch erforderlich, da .set -Zuordnungen nur zur Assemblierungszeit erfolgen.

Der Parameter Ausdruck wird ausgewertet, wenn der Assembler auf die Pseudooperation .set trifft. Diese Auswertung erfolgt unter Verwendung der Regeln unter Handhabung von Ausdrücken in Kombination ; Typ und Wert des Auswertungsergebnisses werden intern gespeichert. Wenn die Auswertung von Ausdruckzu einem ungültigen Typ führt, enthalten alle Anweisungen, die das Symbol Name verwenden, einen Fehler.

Der gespeicherte Typ und Wert für das Symbol Name, nicht die ursprüngliche Ausdrucksdefinition, werden verwendet, wenn Name in anderen Anweisungen verwendet wird.

Parameter

Element Beschreibung
Name Stellt ein Symbol dar, das vor seiner Definition in einer .set -Anweisung verwendet werden kann. Vorwärtsverweise sind in einem Modul zulässig.
Ausdruck Definiert den Typ und den Wert des Symbols Name. Die im Ausdruck referenzierten Symbole müssen definiert sein; Vorwärtsverweise sind nicht zulässig. Bei den Symbolen kann es sich nicht um nicht definierte externe expressions.The -Symbole müssen sich nicht innerhalb des Steuerabschnitts befinden, in dem die Pseudooperation ( .set pseudo-op appears.The Ausdruck kann auch auf eine Registernummer verweisen, aber nicht auf den Inhalt des Registers zur Laufzeit.

Beispiele

  1. Das folgende Beispiel veranschaulicht die Verwendung der Pseudooperation .set :
    
    .set ap,14 # Assembler assigns value 14 
                # to the symbol ap -- ap
                # is absolute.
      .
      .
    lil ap,2
     
            # Assembler substitutes value 14
            # for the symbol.
            # Note that ap is a register
            # number in context
            # as lil's operand.
    
  2. Das folgende Beispiel führt aufgrund eines ungültigen Typs zu einem Assemblierungsfehler:
    
         .csect  a1[PR]
     L1:  l       20,30(10)
          .csect  a2[rw]
          .long   0x20
     L2:  .long   0x30
          .set    r1, L2 - L1  # r1 has type of E_REXT
                               # r1 has value of 8
          .long   r1 + 10
          .long   L2 - r1      #  Error will be reported.
                               #    L2 is E_REL
                               #    r1 is E_REXT
                               #  E_REL - E_REXT ==> Invalid type