Init: // Init solo per il simulatore SUBI SP, SP, #512 // 8x8x2x4 ADDI X9, XZR, #127 LSL X9, X9, #23 // rappresentazione binaria di 1.0 STURW X9, [SP, #0] LDURS S0, [SP, #0] FADDS S1, S0, S0 MOV X0, SP ADDI X1, X0, #256 MOV X2, XZR for0: CMPI X2, #5 B.GE exit0 LSL X3, X2, #2 ADD X4, X0, X3 ADD X5, X1, X3 STURS S0, [X4, #0] STURS S1, [X5, #0] ADDI X2, X2, #1 B for0 exit0: BL myAdd ADDI SP, SP, #512 B Init f0: // inventata, calcola il quadrato di x FMULS S0, S0, S0 BR LR // Soluzione dell'esercizio d'esame: myAdd: SUBI SP, SP, #48 STUR LR, [SP, #0] STUR X20, [SP, #8] // A STUR X21, [SP, #16] // B STUR X22, [SP, #24] // i STUR X23, [SP, #32] // j STUR X19, [SP, #40] // &(A[i][j]) MOV X20, X0 MOV X21, X1 MOV X22, XZR // i=0 for1: SUBIS XZR, X22, #8 // CMPI X22, #8 B.GE exit1 MOV X23, XZR // j=0 for2: SUBIS XZR, X23, #8 // CMPI X22, #8 B.GE exit2 LSL X9, X22, #3 // i*8 ADD X9, X9, X23 // i*8+j LSL X9, X9, #2 // (i*8+j)*sizeof(float) ADD X19, X20, X9 // &(A[i][j]) ADD X10, X21, X9 // &(B[i][j]) LDURS S0, [X10, #0] BL f0 LDURS S1, [X19, #0] FADDS S1, S1, S0 STURS S1, [X19, #0] ADDI X23, X23, #1 B for2 exit2: ADDI X22, X22, #1 B for1 exit1: LDUR LR, [SP, #0] LDUR X20, [SP, #8] // A LDUR X21, [SP, #16] // B LDUR X22, [SP, #24] // i LDUR X23, [SP, #32] // j LDUR X19, [SP, #40] // &(A[i][j]) ADDI SP, SP, #48