;********************************************************************* ;********************************************************************* ;** ** ;** NASOBENI MATIC NxN ** ;** (X36APS) ** ;** ** ;** Jan Mateju, matejj6 ** ;** Jan Dvorak, dvoraj19 ** ;** ** ;** 10x10..6894 ** ;** 4x4..602 5x5..1229 6x6..1792 7x7..3083 8x8..3390 9x9..5404 ** ;********************************************************************* ;********************************************************************* ;** priprava datoveho prostoru ;********************************************************************* .data ;** zasobnik k ulozeni registru Stack: .space 4096 ;** N N: .word 5 ;** matice A maticeA: ;5x5 radku .float 1 .float 2 .float 3 .float 4 .float 5 .float 6 .float 7 .float 8 .float 9 .float 10 .float 11 .float 12 .float 13 .float 14 .float 15 .float 16 .float 17 .float 18 .float 19 .float 20 .float 21 .float 22 .float 23 .float 24 .float 25 ;** matice B maticeB: ;5x5 radku .float 21 .float 1 .float 20 .float 11 .float 10 .float 22 .float 2 .float 19 .float 12 .float 9 .float 23 .float 3 .float 18 .float 13 .float 8 .float 24 .float 4 .float 17 .float 14 .float 7 .float 25 .float 5 .float 16 .float 15 .float 6 ;** matice C maticeC: .space 400 ;** vykonna cast ;********************************************************************* .text ;**** pocatecni nastaveni **** Init: ;** nacteni adresy Stack, N, matice A, matice B, matice C lhi r29,((Stack + 4092)>>16)&0xffff addui r29,r29,(Stack + 4092)&0xffff lhi r1,N>>16&0xffff addui r1,r1,N&0xffff lhi r13,maticeA>>16&0xffff addui r13,r13,maticeA&0xffff lhi r14,maticeB>>16&0xffff addui r14,r14,maticeB&0xffff lhi r15,maticeC>>16&0xffff addui r15,r15,maticeC&0xffff ;** ulozeni registru na zasobnik sw -4(r29),r4 sw -8(r29),r5 sw -12(r29),r6 sw -16(r29),r7 sw -20(r29),r16 sw -24(r29),r17 sw -28(r29),r18 sw -32(r29),r19 sw -36(r29),r20 sw -40(r29),r21 sw -44(r29),r22 sw -48(r29),r23 sf -52(r29),f2 sf -56(r29),f3 sf -60(r29),f4 sf -64(r29),f5 sf -68(r29),f6 sf -72(r29),f7 sf -76(r29),f8 sf -80(r29),f9 sf -84(r29),f10 ;**** nasobeni matic **** Do: ;** nahrani rozmeru matice do reg. addui r2,r0,4 lw r24,(r1) ;r24 <= N mult r25,r24,r24 ;r25 <= N*N add r1,r0,r24 mult r18,r24,r2 mult r19,r25,r2 HLAVNICYKL: beqz r1,UPLNYKONEC add r12,r0,r0 add r2,r0,r24 Cykl4a: slti r20,r2,4 addf f20,f0,f0 ;*** bnez r20,Cykl2a ;addf f20,f0,f0 ;*** addf f21,f0,f0 addf f22,f0,f0 addf f23,f0,f0 add r8,r0,r11 add r9,r0,r12 Cykl4: add r16,r13,r8 lf f9,(r16) add r17,r14,r9 lf f1,(r17) lf f2,4(r17) lf f3,8(r17) lf f4,12(r17) multf f5,f1,f9 multf f6,f2,f9 multf f7,f3,f9 multf f8,f4,f9 addf f20,f20,f5 addf f21,f21,f6 addf f22,f22,f7 add r9,r9,r18 ;*** addf f23,f23,f8 ;addui r8,r8,4 ;*** ;add r9,r9,r18 ;*** slt r20,r9,r19 addui r8,r8,4 ;*** bnez r20,Cykl4 add r16,r15,r10 sf (r16),f20 sf 4(r16),f21 sf 8(r16),f22 sf 12(r16),f23 addui r12,r12,16 addui r10,r10,16 subui r2,r2,4 j Cykl4a Cykl2a: slti r20,r2,2 addf f20,f0,f0 ;*** bnez r20,Cykl1a ;addf f20,f0,f0 ;*** addf f21,f0,f0 add r8,r0,r11 add r9,r0,r12 Cykl2: add r16,r13,r8 lf f9,(r16) add r17,r14,r9 lf f1,(r17) lf f2,4(r17) multf f5,f1,f9 multf f6,f2,f9 addf f20,f20,f5 addf f21,f21,f6 addui r8,r8,4 add r9,r9,r18 slt r20,r9,r19 bnez r20,Cykl2 add r16,r15,r10 sf (r16),f20 sf 4(r16),f21 addui r10,r10,8 subui r2,r2,2 ;j Cykl2a Cykl1a: beqz r2,Konec addf f20,f0,f0 add r8,r0,r11 add r9,r0,r12 Cykl1: add r16,r13,r8 lf f9,(r16) add r17,r14,r9 lf f1,(r17) multf f5,f1,f9 addui r8,r8,4 ;*** add r9,r9,r18 ;*** addf f20,f20,f5 ;addui r8,r8,4 ;*** ;add r9,r9,r18 ;*** slt r20,r9,r19 bnez r20,Cykl1 add r16,r15,r10 addui r10,r10,4 ;*** sf (r16),f20 ;addui r10,r10,4 ;*** subui r2,r2,1 ;j Cykl1a Konec: subui r1,r1,1 add r11,r11,r18 j HLAVNICYKL ;**** konecna rezie **** UPLNYKONEC: ;** nahrani ulozenych hodnot ze zasobniku lw r4,-4(r29) lw r5,-8(r29) lw r6,-12(r29) lw r7,-16(r29) lw r16,-20(r29) lw r17,-24(r29) lw r18,-28(r29) lw r19,-32(r29) lw r20,-36(r29) lw r21,-40(r29) lw r22,-44(r29) lw r23,-48(r29) lf f2,-52(r29) lf f3,-56(r29) lf f4,-60(r29) lf f5,-64(r29) lf f6,-68(r29) lf f7,-72(r29) lf f8,-76(r29) lf f9,-80(r29) lf f10,-84(r29) ;POUZE KONTROLA lf f0,(r15) lf f1,4(r15) lf f2,8(r15) lf f3,12(r15) lf f4,16(r15) lf f5,20(r15) lf f6,24(r15) lf f7,28(r15) lf f8,32(r15) lf f9,36(r15) lf f10,40(r15) lf f11,44(r15) lf f12,48(r15) lf f13,52(r15) lf f14,56(r15) lf f15,60(r15) lf f16,64(r15) lf f17,68(r15) lf f18,72(r15) lf f19,76(r15) lf f20,80(r15) lf f21,84(r15) lf f22,88(r15) lf f23,92(r15) lf f24,96(r15) trap #0 ;konec!