Skip navigation

ARES


Page Content:

Ausdrücke (Expressions)

Die meisten MARS-Assembler verstehen mathematische (und Boole'sche) Ausdrücke. Sie dürfen bestimmte mathematische und logische Operatoren, Klammern und Labelnamen beinhalten. Solche Ausdrücke werden bei der Übersetzung ausgewertet und die Ganzzahligen Ergebnisse in die Felder der Instruktionen eingesetzt. Sie sind nicht Teil des Maschinencodes, sondern nur Elemente des Präprozessors ("Parser"). Wenn die Option gewählt ist, dann werden bestimmte Variablen der MARS-Umgebung, für die das Programm compiliert werden soll, vorgegeben (Mehr dazu unter Pseudo-Instruktionen). Ein Beispiel soll es verdeutlichen:

Dieses Assembler-Programm wird für eine CORESIZE == 8000 übersetzt:
  loop    MOV   ptr+1,    @ptr 
ADD #ptr+4, ptr
ptr JMP loop, #CORESIZE/(ptr-loop)
Der Resultierende Code sieht dann so aus:
  MOV   $+3,   @+2 
ADD #+5, $+1
JMP $-2, #+4000
(Das Tutorial gibt Erklärungen zur Mathematik mit negativen Zahlen in Redcode)

Operatoren

Bis auf den Zuweisungsoperator ("=") versteht ARES die selben Ausdrücke, wie sie auch von pmars interpretiert werden.

Mathematische Operatoren
Symbol Operator
* Multiplikation
/ Division
% Modulo (Rest der Division)
+ Addition oder unäres Plus
- Subtraktion oder unäres Minus


Vergleichs- Operatoren
Symbol Operator
== Gleichheit
!= Ungleichheit
< Kleiner als
> Größer als
<= Kleiner oder gleich
>= Größer oder gleich


Logische Operatoren
Symbol Operator
&& logisches Und (AND)
|| logisches Oder (OR)
! unäre logische Negation (NOT)


Wie in der Mathematik üblich, haben bestimmte Operatoren Vorrang gegenüber anderen. Gleichrangige Operatoren werden von links nach rechts abgearbeitet. Vergleichs- und logische Operatoren ergeben 1 für wahr und 0 für falsch. Klammern können benutzt werden, um die Priorität zu umgehen. Die Operatoren ihrer Priorirät nach sortiert sind:

Priorität der Operatoren
Priorität Symbol Operator
1 ! - + Negation, Vorzeichen
2 * / % Multiplikation, Division, Modulo
3 + - Addition, Subtraktion
4 == !=
< >
<= >=
Vergleich
5 && AND
6 || OR


Pseudo-Instruktionen

Content Management:

μCMS α1.6