JASm Coding – Beispielprogramme 2 (Logik, ggT, Division und bitweises Schieben)

Für die minimalistische Programmiersprache JASm, die mit nur zwei Befehlen auskommt, wurden schon eine Reihe an Algorithmen vorgestellt. Unter anderem auch zur Addition und Multiplikation von Zahlen. In diesem Beitrag werden die vorgestellten Codebeispiele länger, obwohl die eigentlich damit realisierten Funktionen nach wie vor eher “einfacher” Natur sind. So gehört die Division eigentlich zum Kernelement einer Programmiersprache, bei JASm, welches nur die Subtraktion (und einen Sprung) kennt, liegt dies anders.

Weiterlesen

JASm Compiler und Laufzeitumgebung

Nach der Theorie zu JASm, folgt nun noch etwas mehr Praxis und zwar dergestalt, dass ich hier nun einen in JavaScript implementierten “Compiler”, bzw. Interpreter präsentiere. Das Tool liest in JASm geschriebenen Quelltext und wandelt diesen in ein für die JASm Maschine geeignetes Speicherabbild um, bzw. führt den Code auch aus und liefert eine Reihe an zusätzlicher Informationen.

Weiterlesen

JASm Coding – Beispielprogramme 1 (Sprung, Addition, Multiplikation , Ausgabe und Funktion)

Bislang wurden die Kernelemente von JASm Core sowie einige hilfreiche Sprachelemente vorgestellt. Dies wurde an zweckdienlichen Beispielen präsentiert, doch noch steht unter anderem auch noch der Nachweis aus, dass die zwei Befehle SUB und JA tatsächlich ausreichend sind, um komplexere Aufgaben zu bewältigen. In diesem Beitrag sollen nun einige weitergehende Codebeispiele dargestellt werden. Die Beispiele bauen in vielen Fällen aufeinander auf und nehmen so in ihrer Komplexität jeweils zu. Es ist auch in einigen Fällen nicht immer der effizienteste Lösungsansatz gewählt worden, da es hier immer noch um die Vermittlung der Sprache geht.

Weiterlesen

JASm Coding – Sprachkonstrukte

Im vorangegangenen Beitrag wurden die esoterische Programmiersprache JASm und die zugehörige Maschine vorgestellt. Den Kern der Sprache machen lediglich zwei Befehle aus: SUB und JA. Alle weiteren Elemente sind (wie die beiden Befehle selber eigentlich auch) nur Zahlen. Um die Programmierung etwas zu erleichtern, werden nun noch einige Sprachkonstrukte eingeführt, die den Kern von JASm nicht berühren und auch keine Anpassung oder gar Erweiterung der Maschine bedürfen, wohl aber ein wenig Komfort für einen Programmierer bieten.

Weiterlesen

JASm Core – eine esoterische Programmiersprache

Moderne Programmiersprachen glänzen durch einen umfangreichen Befehlssatz und effizienter Programmierlogik. Komplexe Algorithmen lassen sich teilweise gut verständlich abbilden und dass tief darunter ein Maschinencode entsteht, für den es auch einmal “maschinennahe” Codiermöglichkeiten (Assembler) gab, hat man schnell vergessen. Meine letzte Berührung mit Assembler ist – glücklicherweise – nun auch schon über 20 Jahre her und dennoch ist eine gewisses Faszination geblieben. Kombiniert für das Interesse an esoterischen Programmiersprachen ist es nicht mehr weit, bis ein über 20 Jahre altes Konzept noch einmal aus der mentalen Schublade hervorgekramt wird: JASm.

Weiterlesen

Comparing Programming Languages with Women

Assembler – A female track star who holds all the world speed records. She is hard and bumpy, and so is not that pleasant to embrace. She can cook up any meal, but needs a complete and detailed recipe. She is not beautiful or educated, and speaks in monosyllables like “MOV, JUMP, INC”. She has a fierce and violent temper that make her the choice of last resort. FORTRAN – Your grey-haired grandmother. People make fun of her just because she is old, but if you take the time to listen, you can learn from her experiences and her mistakes. During her lifetime she has acquired many useful skills in sewing and cooking (subroutine libraries) that no younger women can […]

Weiterlesen

How did the chicken cross the road

NT Chicken Will cross the road in June. No, August. September for sure. OS/2 Chicken It crossed the road in style years ago, but it was so quiet that nobody noticed. Win 95 Chicken You see different colored feathers while it crosses, but cook it and it still tastes like … chicken. Microsoft Chicken (TM) It’s already on both sides of the road. And it just bought the road. OOP Chicken It doesn’t need to cross the road, it just sends a message. Assembler Chicken First it builds the road … C Chicken It crosses the road without looking both ways. C++ Chicken The chicken wouldn’t have to cross the road, you’d simply refer to him on the other side. […]

Weiterlesen

Forgotten Assembly Language Commands

More about this on Jaegers.Net ARG Agree to run garbage BBT Branch on binary tree BBW Branch both ways BEW Branch either way BH Branch and hang BMR Branch multiple registers BOB Branch on bug BOD Beat on drum BOI Byte operator immediately BPDI Be polite, don’t interrupt BPO Branch on power off BST Backspace and stretch tape CEMU Close eyes and monkey with user space CLBR Clobber register CLBRI Clobber register immediately CM Circulate memory CPAR Crumple paper and rip CRB Crash and burn CRR Convert to Roman Numerals CU Convert to unary CZZC Convert zone to ZIP code DC Divide and conquer DWIMNWIS Do what I mean, not what I say DMPK Destroy memory protect key DNPG Do […]

Weiterlesen
1 2