]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/contribs/assembly/freescale/Doc/numeri_perfetti.txt
a) update with upstream version
[helm.git] / helm / software / matita / contribs / assembly / freescale / Doc / numeri_perfetti.txt
diff --git a/helm/software/matita/contribs/assembly/freescale/Doc/numeri_perfetti.txt b/helm/software/matita/contribs/assembly/freescale/Doc/numeri_perfetti.txt
new file mode 100755 (executable)
index 0000000..36b77f0
--- /dev/null
@@ -0,0 +1,302 @@
+\r
+NUMERI AUREI: Somma divisori(x)=x\r
+ Fino a 0xFFFF sono 6/28/496/8128\r
+\r
+static unsigned int result[16]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };\r
+                            -> { 6, 28, 496, 8128 ... }\r
+\r
+void main(void)\r
+{\r
+unsigned int res_pos=0,tested_num=0,divisor=0;\r
+unsigned long int acc=0;\r
+\r
+for(tested_num=1;tested_num<2;tested_num++)\r
+ {\r
+ for(acc=0,divisor=1;divisor<tested_num;divisor++)\r
+  {\r
+  if(!(tested_num%divisor))\r
+   { acc+=divisor; }\r
+  }\r
\r
+ if(acc==tested_num)\r
+  { result[res_pos++]=tested_num; }\r
+ }\r
+}\r
+\r
+*************************************\r
+\r
+A: 0x00 HX: 0x1A00 PC: 0x18BE SP: 0x016F Z:1 (I:1)\r
+A: 0x00 HX: num    PC: 0x1950 SP: 0x016F Z:1 (I:1)\r
+\r
+T(n) = 80+65*sum[i=1,n]{sum[k=1,i]{k}}\r
+cioe'\r
+T(n) = 80+(65*n*(n+1)*(n+2))/6\r
+\r
+   n  clocki clockf        clocktot      T(n)\r
+1000: 543 -> 156.302.031 | 156.301.488 | 10.865.855.080\r
+ 900: 543 -> 121.788.732 | 121.788.189 |  7.923.844.580\r
+ 800: 543 ->  91.818.647 |  91.818.104 |  5.567.484.080\r
+ 700: 543 ->  66.162.370 |  66.161.827 |  3.731.773.580\r
+ 600: 543 ->  44.814.748 |  44.814.205 |  2.351.713.080\r
+ 500: 543 ->  27.866.608 |  27.866.065 |  1.362.302.580\r
+*497: 543 ->  27.430.121 |  27.429.578 |  1.337.976.265\r
+ 496: 543 ->  27.284.097 |  27.283.554 |  1.329.932.320\r
+ 400: 543 ->  15.384.865 |  15.384.322 |    698.542.080\r
+ 300: 543 ->   7.308.541 |   7.307.998 |    295.431.580\r
+ 200: 543 ->   3.178.553 |   3.178.010 |     87.971.080\r
+ 100: 543 ->     826.875 |     826.332 |     11.160.580\r
+  50: 543 ->     218.618 |     218.075 |      1.436.580 \r
+ *29: 543 ->      77.875 |      77.332 |        292.255\r
+  28: 543 ->      72.452 |      71.909 |        263.980\r
+  20: 543 ->      38.104 |      37.561 |        100.180\r
+  10: 543 ->      10.307 |       9.764 |         14.380\r
+  *7: 543 ->       5.411 |       4.868 |          5.540\r
+   6: 543 ->       3.778 |       3.235 |          3.720\r
+   5: 543 ->       2.849 |       2.306 |          2.355\r
+   4: 543 ->       1.813 |       1.270 |          1.380\r
+   3: 543 ->       1.182 |         639 |            730\r
+   2: 543 ->         700 |         157 |            340\r
+   1: 543 ->         623 |          80 |            145\r
+\r
+quindi tempo di esecuzione e T(n), cioe' o(n^3)\r
+\r
+*********************************************\r
+\r
+static unsigned int result[16]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };\r
+word result[16] = 0x0100\r
+\r
+void main(void)\r
+{\r
+unsigned int res_pos=0,tested_num=0,divisor=0;\r
+unsigned long int acc=0;\r
+\r
+18BE A7 F6    AIS #-10 <----------- INGRESSO MAIN\r
+18C0 95       TSX\r
+18C1 6F 09    CLR 9,X\r
+18C3 6F 08    CLR 8,X\r
+18C5 6F 01    CLR 1,X\r
+18C7 7F       CLR ,X\r
+18C8 6F 03    CLR 3,X\r
+18CA 6F 02    CLR 2,X\r
+18CC CD 19 51 JSR 0x1951 ; 0x1951\r
+\r
+for(tested_num=1;tested_num<2;tested_num++)\r
+ {\r
+\r
+18CF 9E FF 01 STHX 1,SP\r
+18D2 20 72    BRA *+116 ; 0x1946\r
+18D4 AD 7B    BSR *+125 ; 0x1951\r
+18D6 9E FF 03 STHX 3,SP\r
+\r
+ for(acc=0,divisor=1;divisor<tested_num;divisor++)\r
+  {\r
+  if(!(tested_num%divisor))\r
+   { acc+=divisor; }\r
+  }\r
+\r
+18D9 20 3B    BRA *+61 ; 0x1916\r
+18DB 9E FE 01 LDHX 1,SP\r
+18DE 89       PSHX\r
+18DF 8B       PSHH\r
+18E0 9E FE 05 LDHX 5,SP\r
+18E3 CD 1A 1A JSR 0x1A1A ; 0x1A1A\r
+18E6 A7 02    AIS #2\r
+18E8 65 00 00 CPHX #0x0000\r
+18EB 26 1F    BNE *+33 ; 0x190C\r
+18ED 95       TSX\r
+18EE E6 03    LDA 3,X\r
+18F0 EE 02    LDX 2,X\r
+18F2 87       PSHA\r
+18F3 89       PSHX\r
+18F4 4F       CLRA\r
+18F5 87       PSHA\r
+18F6 87       PSHA\r
+18F7 95       TSX\r
+18F8 89       PSHX\r
+19F9 8B       PSHH\r
+18FA AF 08    AIX #8\r
+18FC 89       PSHX\r
+18FD 8B       PSHH\r
+18FE 9E FE 03 LDHX 3,SP\r
+1901 CD 1A 2A JSR 0x1A2A ; 0x1A2A\r
+1904 95       TSX\r
+1905 AF 0E    AIX #14\r
+1907 CD 1A 30 JSR 0x1A30 ; 0x1A30\r
+190A A7 06    AIS #6\r
+190C C7 18 00 STA 0x1800 ; <----------- WATCHDOG\r
+190F 95       TSX\r
+1910 6C 03    INC 3,X\r
+1912 26 02    BNE *+4 ; 0x1916\r
+1914 6C 02    INC 2,X\r
+1916 9E FE 01 LDHX 1,SP\r
+1919 9E F3 03 CPHX 3,SP\r
+191C 22 BD    BHI *-65 ; 0x18DB\r
+\r
+ if(acc==tested_num)\r
+  { result[res_pos++]=tested_num; }\r
+ }\r
+}\r
+\r
+191E 9E F3 07 CPHX 7,SP\r
+1921 26 1D    BNE *+31 ; 0x1940\r
+1923 9E FE 05 LDHX 5,SP\r
+1926 26 18    BNE *+26 ; 0x1940\r
+1928 9E FE 09 LDHX 9,SP\r
+192B 89       PSHX\r
+192C AF 01    AIX #1\r
+192E 9E FF 0A STHX 10,SP\r
+1931 88       PULX\r
+1932 58       LSLX\r
+1933 9E E6 02 LDA 2,SP\r
+1936 8C       CLRH\r
+1937 D7 01 01 STA 257,X\r
+193A 9E E6 01 LDA 1,SP\r
+193D D7 01 00 STA 256,X\r
+1940 95       TSX\r
+1941 6C 01    INC 1,X\r
+1943 26 01    BNE *+3 ; 0x1946\r
+1945 7C       INC ,X\r
+1946 9E FE 01 LDHX 1,SP\r
+1949 65 00 01 CPHX #0x0001 <----------------- END_NUM\r
+194C 25 86    BCS *-120 ; 0x18D4\r
+194E A7 0A    AIS #10\r
+1950 81       RTS <------------- USCITA MAIN\r
+\r
+1951 5F       CLRX\r
+1952 8C       CLRH\r
+1953 9E FF 09 STHX 9,SP\r
+1956 8C       CLRH\r
+1957 9E FF 07 STHX 7,SP\r
+195A 5C       INCX\r
+195B 81       RTS <----------- FINE MAIN\r
+\r
+static void _PUSH_ARGS_L(void) { ... }\r
+195C E6 03    LDA 3,X\r
+195E 87       PSHA\r
+195F E6 02    LDA 2,X\r
+1961 87       PSHA\r
+1962 9E AE    LDHX ,X\r
+1964 89       PSHX\r
+1965 8B       PSHH\r
+1966 9E FE 07 LDHX 7,SP\r
+1969 E6 03    LDA 3,X\r
+196B 9E E7 11 STA 17,SP\r
+196E E6 02    LDA 2,X\r
+1970 9E E7 10 STA 16,SP\r
+1973 9E AE    LDHX ,X\r
+1975 9E FF 0E STHX 14,SP\r
+1978 9E FE 05 LDHX 5,SP\r
+197B FC       JMP ,X\r
+\r
+static void _ENTER_BINARY_L(void) { ... }\r
+197C 87       PSHA\r
+197D 89       PSHX\r
+197E 8B       PSHH\r
+197F 89       PSHX\r
+1980 8B       PSHH\r
+1981 9E FE 06 LDHX 6,SP\r
+1984 89       PSHX\r
+1985 8B       PSHH\r
+1986 9E FE 0A LDHX 10,SP\r
+1989 9E FF 08 STHX 8,SP\r
+198C 9E FE 0C LDHX 12,SP\r
+198F CC 19 5C JMP 0x195C\r
+\r
+static void _IDIVMOD (char dummy_sgn, int j, int dummy, int i, ...) { ... }\r
+1992 9E 6D 04 TST 4,SP\r
+1995 26 1A    BNE *+28 ; 0x19B1\r
+1997 95       TSX\r
+1998 E6 07    LDA 7,X\r
+199A EE 04    LDX 4,X\r
+199C 8C       CLRH\r
+199D 52       DIV\r
+199E 9E E7 04 STA 4,SP\r
+19A1 9E E6 09 LDA 9,SP\r
+19A4 52       DIV\r
+19A5 9E E7 05 STA 5,SP\r
+19A8 9E 6F 08 CLR 8,SP\r
+19AB 8B       PSHH\r
+19AC 86       PULA\r
+19AD 9E E7 09 STA 9,SP\r
+19B0 81       RTS\r
+19B1 4F       CLRA\r
+19B2 87       PSHA\r
+19B3 AE 08    LDX #0x08\r
+19B5 98       CLC\r
+19B6 9E 69 0A ROL 10,SP\r
+19B9 9E 69 09 ROL 9,SP\r
+19BC 9E 69 01 ROL 1,SP\r
+19BF 9E E6 05 LDA 5,SP\r
+19C2 9E E1 01 CMP 1,SP\r
+19C5 22 1D    BHI *+31 ; 0x19E4\r
+19C7 26 08    BNE *+10 ; 0x19D1\r
+19C9 9E E6 0E LDA 6,SP\r
+19CC 9E E1 09 CMP 9,SP\r
+19CF 22 13    BHI *+21 ; 0x19E4\r
+19D1 9E E6 09 LDA 9,SP\r
+19D4 9E E0 06 SUB 6,SP\r
+19D7 9E E7 09 STA 9,SP\r
+19DA 9E E6 01 LDA 1,SP\r
+19DD 9E E2 05 SBC 5,SP\r
+19E0 9E E7 01 STA 1,SP\r
+19E3 99       SEC\r
+19E4 5B D0    DBNZX *-46 ; 0x19B6\r
+19E6 9E E6 0A LDA 10,SP\r
+19E9 49       ROLA\r
+19EA 9E E7 06 STA 6,SP\r
+19ED 9E E6 09 LDA 9,SP\r
+19F0 9E E7 0A STA 10,SP\r
+19F3 86       PULA\r
+19F4 9E E7 08 STA 8,SP\r
+19F7 9E 6F 04 CLR 4,SP\r
+19FA 81       RTS\r
+\r
+static void _LADD_k_is_k_plus_j(_PARAM_BINARY_L) { ... }\r
+19FB 95       TSX\r
+19FC E6 12    LDA 18,X\r
+19FE EB 05    ADD 5,X\r
+1A00 E7 12    STA 18,X\r
+1A02 E6 11    LDA 17,X\r
+1A04 E9 04    ADC 4,X\r
+1A06 E7 11    STA 17,X\r
+1A08 E6 10    LDA 16,X\r
+1A0A E9 03    ADC 3,X\r
+1A0C E7 10    STA 16,X\r
+1A0E E6 0F    LDA 15,X\r
+1A10 E9 02    ADC 2,X\r
+1A12 E7 0F    STA 15,X\r
+1A14 A7 0A    AIS #10\r
+1A16 8A       PULH\r
+1A17 88       PULX\r
+1A18 86       PULA\r
+1A19 81       RTS\r
+\r
+void _IMODU_STAR08(int i, ...) { ... }\r
+1A1A A7 FE    AIS #-2\r
+1A1C 9E FF 01 STHX 1,SP\r
+1A1F 87       PSHA\r
+1A20 CD 19 92 JSR 0x1992 ; 0x1992\r
+1A23 86       PULA\r
+1A24 A7 02    AIS #2\r
+1A26 9E FE 03 LDHX 3,SP\r
+1A29 81       RTS\r
+\r
+void _LADD(void) { ... }\r
+1A2A CD 19 7C JSR 0x197C ; 0x197C\r
+1A2D CD 19 FB JSR 0x19FB ; 0x19FB\r
+\r
+void _POP32(void) { ... }\r
+1A30 87       PSHA\r
+1A31 9E E6 04 LDA 4,SP\r
+1A34 F7       STA ,X\r
+1A35 9E E6 05 LDA 5,SP\r
+1A38 E7 01    STA 1,X\r
+1A3A 9E E6 06 LDA 6,SP\r
+1A3D E7 02    STA 2,X\r
+1A3F 9E E6 07 LDA 7,SP\r
+1A42 E7 03    STA 3,X\r
+1A44 86       PULA\r
+1A45 8A       PULH\r
+1A46 88       PULX\r
+1A47 A7 04    AIS #4\r
+1A49 FC       JMP ,X
\ No newline at end of file