]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/assembly/freescale/doc/reverse.txt
matita 0.5.1 tagged
[helm.git] / matita / contribs / assembly / freescale / doc / reverse.txt
1 \r
2 A: 0x00 HX: 0x0D4B SP: 0x0D4A PC: 0x18E0 Z:1\r
3 A: 0x00 HX: LUNG/2 SP: 0x0D4A PC: 0x192B Z:1\r
4 \r
5    8: 178806 -> 179480 :   674 = 42+79*   8\r
6   16: 178806 -> 180112 :  1306 = 42+79*  16\r
7   32: 178806 -> 181376 :  2570 = 42+79*  32\r
8   64: 178806 -> 183904 :  5098 = 42+79*  64\r
9  128: 178806 -> 188960 : 10154 = 42+79* 128\r
10  256: 178806 -> 199072 : 20266 = 42+79* 256\r
11  511: 178806 -> 219138 : 40332 = 42+79* 511\r
12  512: 178806 -> 219301 : 40495 < 42+79* 512 = 40490\r
13  514: 178806 -> 219459 : 40653 < 42+79* 514 = 40648\r
14 1024: 178806 -> 259754 : 80948 > 42+79*1024 = 80938\r
15 \r
16 ottima definizione esatta del tempo di esecuzione!\r
17 \r
18 T(n)=42+79*n+5*(n/512) oppure T(n)=42+79*n+(n>>9)\r
19 \r
20 dati 0x100-> 3072 byte\r
21 \r
22 **********************************************\r
23 \r
24 static unsigned char dati[3072]={...};\r
25 \r
26 void swap(unsigned char *a, unsigned char *b)\r
27  { unsigned char tmp=*a; *a=*b; *b=tmp; return; }\r
28 \r
29 18BE       PSHX\r
30 18BF       PSHH\r
31 18C0       LDHX 5,SP\r
32 18C3       LDA ,X\r
33 18C4       LDHX 1,SP\r
34 18C7       PSHA\r
35 18C8       LDA ,X\r
36 18C9       LDHX 6,SP\r
37 18CC       STA ,X\r
38 18CD       LDHX 2,SP\r
39 18D0       PULA\r
40 18D1       STA ,X\r
41 18D2       AIS #2\r
42 18D4       RTS\r
43 \r
44 18D5-18DF ...\r
45 \r
46 void main(void)\r
47 {\r
48  unsigned int pos=0,limit=0;\r
49 \r
50  for(limit=3072;pos<(limit/2);pos++)\r
51   { swap(&dati[pos],&dati[limit-pos-1]); }\r
52 \r
53 18E0       LDHX #LUNG\r
54 18E3       STHX 4,SP\r
55 18E6 20 32 BRA *+52 ; 191A\r
56 18E8       TSX\r
57 18E9       LDA 2,X\r
58 18EB       ADD #0x00\r
59 18ED       PSHA\r
60 18EE       LDA 1,X\r
61 18F0       ADC #0x01\r
62 18F2       PSHA\r
63 18F3       LDA 4,X\r
64 18F5       SUB 2,X\r
65 18F7       STA ,X\r
66 18F8       LDA 3,X\r
67 18FA       SBC 1,X\r
68 18FC       PSHA\r
69 18FD       LDX ,X\r
70 18FE       PULH\r
71 18FF       AIX #-1\r
72 1901       TXA\r
73 1902       ADD #0x00\r
74 1904       PSHH\r
75 1905       TSX\r
76 1906       STA 3,X\r
77 1908       PULA\r
78 1909       ADC #0x01\r
79 190B       LDX 3,X\r
80 190D       PSHA\r
81 190E       PULH\r
82 190F AD AD BSR *-81 ; 18BE\r
83 1911       AIS #2\r
84 1913       TSX\r
85 1914       INC 2,X\r
86 1916 26 02 BNE *+4 ; 191A\r
87 1918       INC 1,X\r
88 191A       TSX\r
89 191B       LDA 3,X\r
90 191D       PSHA\r
91 191E       PULH\r
92 191F       LSRA\r
93 1920       TSX\r
94 1921       LDX 4,X\r
95 1923       RORX\r
96 1924       PSHA\r
97 1925       PULH\r
98 1926       CPHX 2,SP\r
99 1929 22 BD BHI *-65 ; 18E8\r