{"id":479,"date":"2023-07-28T19:37:50","date_gmt":"2023-07-28T19:37:50","guid":{"rendered":"https:\/\/research.swissdigitization.ch\/?p=479"},"modified":"2023-07-28T19:48:46","modified_gmt":"2023-07-28T19:48:46","slug":"assembler-bsp-6502-jmp-bne-bcs-bcc-etc","status":"publish","type":"post","link":"https:\/\/research.swissdigitization.ch\/?p=479","title":{"rendered":"Assembler (Bsp: 6502): JMP, BNE, BCS, BCC etc."},"content":{"rendered":"\n<p>Der Control-Flow von 6502-Assembler (und viele andere auch) besteht letztlich aus JMPs und Register-abh\u00e4ngigen Branches (Vorgelagerte Vergleiche und implizite Vergleiche (INC,DEC) etc. Dadurch werden komplexeste Abfragen und Spruenge m\u00f6glich (vgl. GOTO-Befehl in BASIC), die so gar nicht mehr heutigen vorallem Tree-basierten Ideen von Programmiersprachen entsprechen (vgl. C-\u00e4hnliche Sprachen). Die meisten Hochsprachen haben die Sprungbefehle abgeschafft und damit die Programme les- und beherrschbarer gemacht. Zum selben Problem geh\u00f6ren 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\u00e4ndlich k\u00f6nnen moderne Assembler auch relative Sprungmarken verarbeiten wie etwa der KickAssembler &#8211; Nachfolgendes Beispiel).<\/p>\n\n\n\n<p>Anders gesagt, die M\u00f6glichkeit zu Springen erweitert das M\u00f6gliche 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\u00e4ter. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/07\/Bildschirmfoto-2023-07-28-um-17.10.31-572x1024.png\" alt=\"\" class=\"wp-image-480\" width=\"369\" height=\"661\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/07\/Bildschirmfoto-2023-07-28-um-17.10.31-572x1024.png 572w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/07\/Bildschirmfoto-2023-07-28-um-17.10.31-167x300.png 167w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2023\/07\/Bildschirmfoto-2023-07-28-um-17.10.31.png 632w\" sizes=\"auto, (max-width: 369px) 100vw, 369px\" \/><\/figure>\n\n\n\n<p><em>Das Bild zeigt nicht unbedingt, was im Text diskutiert wird.<\/em> Allerdings ist es hier auch m\u00f6glich etwas nach comment_show zu springen, obwohl es linear gar nicht ausgefuehrt werden kann.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Control-Flow von 6502-Assembler (und viele andere auch) besteht letztlich aus JMPs und Register-abh\u00e4ngigen Branches (Vorgelagerte Vergleiche und implizite Vergleiche (INC,DEC) etc. Dadurch werden komplexeste Abfragen und Spruenge m\u00f6glich (vgl. GOTO-Befehl in BASIC), die so gar nicht mehr heutigen vorallem Tree-basierten Ideen von Programmiersprachen entsprechen (vgl. C-\u00e4hnliche Sprachen). Die meisten Hochsprachen haben die Sprungbefehle abgeschafft [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,8,1],"tags":[],"class_list":["post-479","post","type-post","status-publish","format-standard","hentry","category-coding","category-game","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=479"}],"version-history":[{"count":1,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/479\/revisions"}],"predecessor-version":[{"id":481,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/479\/revisions\/481"}],"wp:attachment":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}