Aufbau der Maschine * pattern = 32bit wort * links höchstwertige bit * 8 32bit-Register * max. 2^32 durchnummerierte Arrays, die 32bit-Worte enthalten * im Array mit Nummer 0 steht das Programm * character = 8bit Initialzustand: * das 0-Array wird von einer Programm-Rolle geladen * alle Register sind 0 * der Program Counter (PC) ist 0 (zeigt auf das erste Feld im 0-Array) Aufbau eines MaschinenWortes: * bits 31-28 -> Operator * bits 27- -> * bits 8-6 -> Register A * bits 5-3 -> Register B * bits 2-0 -> Register C Operatoren * #0. if (C != 0) A=B; * #1. A = Array(B)[[C]]; * #2. Array(A)[[B]] = C; * #3. A = (B + C) % 2^32 * #4. A = (B * C) % 2^32 * #5. if (C != 0) A = (B / C); * #6. A = not(B and C) * #7. stop(); * #8. B = new Array with size C and initialized with 0s; * #9. Array.free(C); * #10. if(0 <= C <= 255) print(C); * #11. if (!EOF) C = blocking_input(); else C = (2^32-1); * #12. 0-Array = Array.copy(B); PC = C; {{tag>computing programming_contests haskell}}


projects/icfp2006/universal_machine.txt · Last modified: 13.11.2008 22:34 (external edit)