;; Hier soll der Stackpointer initialisiert werden. (assign continue (label fib-done)) fib-loop (test (op <) (reg n) (const 2)) (branch (label immediate-answer)) ;; PUSH continue - Anfang (assign a (reg continue)) (assign continue (label aftersave-1)) (goto (label push)) aftersave-1 ;; PUSH continue - Ende (assign a (reg n)) (assign continue (label aftersave-2)) (goto (label push)) aftersave-2 (assign continue (label afterfib-n-1)) (assign n (op -) (reg n) (const 1)) (goto (label fib-loop)) afterfib-n-1 ;; POP n - Anfang (assign continue (label afterrestore-1)) (goto (label pop)) afterrestore-1 (assign n (reg a)) ;; POP n - Ende (assign continue (label afterrestore-2)) (goto (label pop)) afterrestore-2 (assign continue (reg a)) (assign n (op -) (const 2) (reg n)) (assign a (reg continue)) (assign continue (label aftersave-3)) (goto (label push)) aftersave-3 (assign a (reg val)) (assign continue (label aftersave-4)) (goto (label push)) aftersave-4 (assign continue (label afterfib-n-2)) (goto (label fib-loop)) afterfib-n-2 (assign n (reg val)) (assign continue (label afterrestore-3)) (goto (label pop)) afterrestore-3 (assign val (reg a)) (assign continue (label afterrestore-4)) (goto (label pop)) afterrestore-4 (assign continue (reg a)) (assign val (op +) (reg val) (reg n)) (goto (reg continue)) immediate-answer (assign val (reg n)) (goto (reg continue)) ;; Hier soll der Code für push und pop eingefügt werden. fib-done