Sprünge |
Sprünge kontrollieren den Programmablauf. Ohne sie könnte ein Programm nur von oben nach unten laufen. Das wäre nutzlos. Nano hat drei grundsätzliche Sprungbefehle. Du kennst schon einen: "jmp_l". jmp label; springt zur Sprungmarke jsr label; springt zum Unterprogramm rts; kehrt vom Unterprogramm zurück jmp_l L, label; springt zur Sprungmarke, wenn "L" wahr (1) ist jsr_l L, label; springt zum Unterprogramm, wenn "L" wahr (1) istUm Schleifen zu beschleunigen, habe ich zwei Befehle in einen kombiniert: eq_jmp_l L1, L2, label; springt zur Sprungmarke, wenn "L1" gleich "L2" ist neq_jmp_l L1, L2, label; ungleich gr_jmp_l L1, L2, label; grösser ls_jmp_l L1, L2, label; kleiner greq_jmp_l L1, L2, label; grösser oder gleich lseq_jmp_l L1, L2, label; kleiner oder gleich eq_jsr_l L1, L2, label; springt zum Unterprogramm, wenn "L1" gleich "L2" ist neq_jsr_l L1, L2, label; siehe oben! gr_jsr_l L1, L2, label; ls_jsr_l L1, L2, label; greq_jsr_l L1, L2, label; lseq_jsr_l L1, L2, label;Siehe auch: Schleifen Das folgende Beispiel zeigt wie man den "jsr" Befehl verwendet: mul.na 1| push_i 33, L0; 2| push_i 17, L1; 3| 4| jsr multiply; springe zu Zeile "11" 5| print_l L2; 6| push_i 1, L3; 7| print_n L3; 8| push_i 0, L3; 9| exit L3; 10| 11| lab multiply; 12| mul_l L0, L1, L2; 13| rts; springe zurück zu Zeile "5"Prev: Schleifen | Next: Felder |