; Richtlinien ; a) vor Aufruf einer Funktion ist unbekannt welches Feld ausgewählt ist ; b) es darf nicht davon ausgegangen werden dass die output felder 0 sind ; c) Befehle dürfen das Feld nicht verändern. Genau so Schleifen [] ; d) Jedem Befehl müssen unterschiedliche Parameter vorgelegt werden, z.B. "addz a,a" wird zu einer Endlosschleife führen ; i = Eingabeparameter ; o = Ausgabeparameter ; t = Temporäre Variablen ; Que: Ist diese BF Sprache noch Turning-Vollständig, wenn "x,[>]y" nicht erlaubt ist? ; todo: set a, 5 = "5 mal +" ; todo: sub und add gleichzeitig? z.b. a+, b-, c+ ; beschreibung: ; - wenn z.B. die argumente ia, ib, ic übergeben wurden, dann bedeutet i*([-]) folgendes: ia[-]ib[-]ic[-] ; ebenfalls möglich: i*, o* . notation dann mittels (ia, ib, ic), (oa, ob, oc) ; --- (1) Grundlegende Befehle mit BF-Sprachelementen zero i* { ; i* = 0 i*([-]) } addz ia, o* { ; o* += ia ; ia = 0 ia[- o*(+) ia] } subz ia, o* { ; o* -= ia ; ia = 0 ia[- o*(-) ia] } ; --- (2) Aufbauende Befehle add ia, o* { ; o* += ia movz ia, t1 addz t1, ia, o* } sub ia, o* { ; o* -= ia ; movz ia, t1, t2 ; subz t1, o* ; addz t2, ia ; kürzer: ia[- o*(-) t1+ ia] addz t1, ia } mov ia, o* { ; o* = ia zero o* add ia, o* } movz ia, o* { ; o* = ia ; ia = 0 zero o* addz ia, o* } addmulz ia, ib, o* { ; o* += ia * ib ; ia = 0 ia[- add ib, o* ia] } mulz ia, ib, o* { ; o* = ia * ib ; ia = 0 zero o* addmulz ia, ib, o* } idiv { ; o* = floor(ia / ib) ; todo zero o* zero t1 o*+ add ib, t1 if t1 > ia }