Init: // Init solo per il simulatore SUBI SP, SP, #80 ADDI X3, XZR, #5 // N=5 MOV X1, SP // h[] = SP ADDI X2, SP, #40 // X = h+5 SUBI X0, XZR, #10 // x = -10 MOV X9, XZR ADDI X11, XZR, #1 for0: CMP X9, X3 B.GE exit0 LSL X10, X9, #3 ADD X12, X10, X1 STUR X11, [X12, #0] ADD X12, X10, X2 ADDI X9, X9, #1 STUR X9, [X12, #0] B for0 exit0: BL FIR ADDI SP, SP, #80 B Init updateX: // qui inizia la soluzione dell'esercizio 4. SUBI X9, X2, #1 for1: SUBIS XZR, X9, #0 B.LE exit1 LSL X10, X9, #3 ADD X10, X10, X1 LDUR X11, [X10, #-8] STUR X11, [X10, #0] SUBI X9, X9, #1 B for1 exit1: STUR X0, [X1, #0] BR LR FIR: SUBI SP, SP, #32 STUR LR, [SP, #0] STUR X1, [SP, #8] STUR X2, [SP, #16] STUR X3, [SP, #24] MOV X1, X2 MOV X2, X3 BL updateX LDUR X1, [SP, #8] // h[] LDUR X2, [SP, #16] // X[] LDUR X3, [SP, #24] // N MOV X10, XZR MOV X9, XZR for2: CMP X9, X3 B.GE exit2 LSL X11, X9, #3 ADD X12, X11, X1 LDUR X12, [X12, #0] ADD X13, X11, X2 LDUR X13, [X13, #0] MUL X12, X12, X13 ADD X10, X10, X12 ADDI X9, X9, #1 B for2 exit2: MOV X0, X10 LDUR LR, [SP, #0] ADDI SP, SP, #32 BR LR