#include #include "adds_21161_ezkit.h" #include .extern _vector_X; .extern _vector_Y; .extern _matrix_A_PM; //--------- .extern _macierz,_macierz1; .extern _i,_j; .segment /pm seg_pmco; //########################################################################### //# pusta procedura - w celu obliczenia czasu wejscia i wyjscia z procedury # //########################################################################### //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ _matrix_x_vector_0: .global _matrix_x_vector_0; leaf_entry; I8=_matrix_A_PM; M8=1; B8=I8; L8=9; I1=_vector_X; M1=1; B1=I1; L1=3; I2= _vector_Y; B2=I2; L2=3; M2=1; //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // wyjscie z procedury (przywrócenie wartości zerowych w rejestrach) i0=0; i1=0; b0=i0; b1=i0; l0=0; l1=0; m0=0; m1=0; I2=0; B2=0; M2=0; L2=0; leaf_exit; _matrix_x_vector_0.end: //############################################################# _macierze: .global _macierze; leaf_entry; I0=_macierz;//adres poczatku macierzy - 1szy element I1=_macierz1; M0=1;// o ile ma zzostac zwiekszany indeks po kazdym odczycie M1=1; r0=DM(_i);// wiersze r1=DM(_j);// kolumny r5=r0;//kopia wierszy r6=r1;//kopia kolumn B0=I0; r9=1; petla: r2=DM(I0,M0); r7=I0; r7=r7+r1; r7=r7-1; I0=r7; r5=r5-1; DM(I1,M1)=r2; if ne jump petla; r7=B0; r7=r7+r9; I0=r7; r5=r0; r9=r9+1; r6=r6-1; if ne jump petla; leaf_entry; _macierze.end: //@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //################################################################ //# procedura _count_start - do pomiaru czasu trwania procedury # //################################################################ _count_start: //* call this to start cycle count .global _count_start; r1=mode1; bit clr mode1 IRPTEN; r0=emuclk; mode1=r1; exit; _count_start.end: //############################################################### //# procedura _count_end - do pomiaru czasu trwania procedury # //############################################################### _count_end: //* call this to end cycle count .global _count_end; r2=mode1; bit clr mode1 IRPTEN; r0=emuclk; r0=r0-r4; r1=14; //* fudge factor to compensate for overhead r0=r0-r1; mode1=r2; exit; _count_end.end: .endseg;