#include #include "adds_21161_ezkit.h" #include .extern _vector_X; .extern _vector_Y; .extern _matrix_A_PM; //--------- .extern _k; .extern _wektor; .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: //############################################################# //^^^^^^^^^^^^^ _sortowanie: .global _sortowanie; leaf_entry; I0=_wektor; r5=DM(_k); M0=1; r10=r5-1; r5=r5-1; r6=r5; r8=0; petelka: r0=DM(I0,M0); r1=DM(I0,M0); comp(r1,r0); if ge jump dalej; r4=I0; r4=r4-1; r4=r4-1; I0=r4; DM(I0,M0)=r1; DM(I0,M0)=r0; r8=0; dalej: r4=r4+1; r4=r4+r8; I0=r4; r8=0; r5=r5-1; if ne jump petelka; r5=DM(_k); r5=r5-1; r8=I0; r8=r8-r10; I0=r8; r4=0; r6=r6-1; if ne jump petelka; leaf_entry; _sortowanie.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;