RISC-V Intstruktionen zählen?
Hey, also ich habe folgenden code gegeben : .data 0xfc00 # 1 KiB Stackspeicher .space 1024 # (0xfc00 - 0x10000) .data 0x100 val: .word 5 out: .word -1 .text main: add sp, zero, 1 # Setze Stack-Pointer auf 0x10000 sll sp, sp, 16 lw a0, val(zero) jal factorial sw a0, out(zero) # Programm beenden add a0, zero, 0 add a7, zero, 93 scall # -------------------------------------------------------------------------------- # factorial: Berechnung der Fakultät mit Endrekursion # a0: Zahl, von der die Fakultät berechnet wird # zurück: # a0: Fakultät # -------------------------------------------------------------------------------- factorial: add a1, zero, 1 add sp, sp, -16 sw ra, 0(sp) jal factorial_helper lw ra, 0(sp) add sp, sp, 16 add a0, a1, zero ret # -------------------------------------------------------------------------------- # factorial_helper: Hilfsfunktion zur Berechnung der Fakultät mit Endrekursion # a0: Zahl, von der die Fakultät berechnet wird # a1: Akkumulator # zurück: # a0: Fakultät # -------------------------------------------------------------------------------- factorial_helper: add t0, zero, 2 blt a0, t0, _factorial_helper_end mul a1, a1, a0 add t1, zero, 1 sub a0, a0, t1 add sp, sp, -16 sw ra, 0(sp) jal factorial_helper lw ra, 0(sp) add sp, sp, 16 _factorial_helper_end: ret Nun soll ich bestimmen wie viele Instruktionen ausgeführt werden: main: 8 factorial : 4 (bis zum jump) factorial_helper: 10 pro Iteration , 4 ganze Interationen, bei der 5 bricht die Schleife ab. Also 40 Interationen + 2 ( add t0, zero, blt a0, t0, _factorial_helper_end) factorial_helper_end : 1 jump back to factorial: 4 (nach dem Jump, Rücksprung) Insgesamt komm ich auf 59 Instruktionen. In der Lösung wurden aber 55 in der factorial gefunden. Also Insgesamt 65 Instruktionen. Welche 6 hab ich übersehen?