Assembler (Bsp: 6502): JMP, BNE, BCS, BCC etc.

Der Control-Flow von 6502-Assembler (und viele andere auch) besteht letztlich aus JMPs und Register-abhängigen Branches (Vorgelagerte Vergleiche und implizite Vergleiche (INC,DEC) etc. Dadurch werden komplexeste Abfragen und Spruenge möglich (vgl. GOTO-Befehl in BASIC), die so gar nicht mehr heutigen vorallem Tree-basierten Ideen von Programmiersprachen entsprechen (vgl. C-ähnliche Sprachen). Die meisten Hochsprachen haben die Sprungbefehle abgeschafft und damit die Programme les- und beherrschbarer gemacht. Zum selben Problem gehören natuerlich auch die Sprungmarken. So muss im Assembler-Universum fuer jeden Sprung, Vergleich ein eineindeutiger Namen gefunden werden. An und fuer sich schon eine haessliche Sache, da interaktive digitale Welten von Vergleichen (If-Statements, For-Next, Loops) leben. (Selbstverständlich können moderne Assembler auch relative Sprungmarken verarbeiten wie etwa der KickAssembler – Nachfolgendes Beispiel).

Anders gesagt, die Möglichkeit zu Springen erweitert das Mögliche enorm und macht die Fehlersuche auch wiederum ungemein anspruchsvoll. Dennoch muss gesagt werden, dass Assembler Source-Code mehr nach einem Rhizom aussieht (einem Hin- und Her, einem Nutzen von Code mehrfach), als die linearsierte Form von Hochsprachen später.

Das Bild zeigt nicht unbedingt, was im Text diskutiert wird. Allerdings ist es hier auch möglich etwas nach comment_show zu springen, obwohl es linear gar nicht ausgefuehrt werden kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert