home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Recent / demo / mag / PowerAmiga4.lha / PowerAmiga4 / ñòàòüè / optimize < prev    next >
Text File  |  2001-05-28  |  12KB  |  268 lines

  1.                    <B>Îïòèìèçàöèÿ äëÿ ïðîöåññðîâ ñåðèè MC680x0.</B>
  2.  
  3.  Äàííàÿ  ñòàòüÿ  íå ïðåòåíäóåò íà èñòèíó â ïîñëåäíåé èíñòàíöèè, îíà îñíîâûâàåòñÿ
  4. íà  ðàçëè÷íîé  äîêóìåíòàöèè ïî ýòèì ïðîöåññîðàì è ìî¸ì ëè÷íîì îïûòå.  Íåñîìíåííî
  5. ñóùåñòâóåò  ìàññà  äðóãèõ  ïðè¸ìîâ  äëÿ  îïòèìèçèðîâàíèÿ ïðîãðàìì, ÿ æå çàòðîíóë
  6. ñàìûå  îñíîâíûå.   Ïðèñòóïàòü  ê ÷òåíèþ ýòîé ñòàòüè ìîæíî, èìåÿ íåêîòîðûé îïûò â
  7. ïðîãðàììèðîâàíèè ïîä ýòè ïðîöåññîðû.  Õîòÿ è íîâè÷êàì áóäåò ïîëåçíî âçãëÿíóòü íà
  8. ýòîò òðóä, íó ïðîôè è òàê çíàþò âñ¸ òî, ÷òî çäåñü íàïèñàíî.
  9.  
  10.  Ïðîöåññîðû  ôèðìû  Motorola  èìåþò â íàëè÷èè êýøè êîìàíä (68020 è âûøå), äàííûõ
  11. (68030  è  âûøå),  êîíâåéåð (68030 è âûøå), ïðåäâûáîðêà è äð., ÷òî äåëàåò ðàñ÷¸ò
  12. âðåìåíè  âûïîëíåíèÿ  êîìàíä  ñëîæíûì.   Äëÿ òîãî, ÷òîáû ïîíÿòü, êàêèå êîìáèíàöèè
  13. äàþò áîëüøóþ ñêîðîñòü âûïîëíåíèÿ, íåîáõîäèìî ïðèäåðæèâàòüñÿ íåñêîëüêèõ ïðàâèë:
  14.  
  15.  1.   Âûáîðêà ïðîöåññîðîì êîìàíä èç êýøà ÌÍÎÃΠáñòðåå íåæåëè ÷åì èç ïàìÿòè.  Òàê
  16. æå è ñ äàííûìè (åñëè íà ïðîöåññîðå óñòàíîâëåí êýø äàííûõ - 68030 è âûøå).
  17.  
  18.  2.   Êîìàíäû.   ðàñïîëîæåííûå  ïî  àäðåñàì,  êðàòíûì ÷åòûð¸ì, áóäóò âûïîëíÿòüñÿ
  19. îäíîâðåììåííî (ïðàâèëüíî ñêàçàòü êîìàíäû âûðîâíåííûå ïî ãðàíèöå äëèííîãî ñëîâà).
  20. Äëÿ  68020  âûïîëíèòñÿ  îäíîâðåìåííî  ìàêñèìóì äâå ïîñëåäîâàòåëüíûå êîìàíäû ò.ê.
  21. ïðîöåññîð ñ÷èòûâàåò ñðàçó 4 áàéòà (äëèèíîå ñëîâî).
  22.  2.1 Ñ MC68030 ïîÿâëÿåòñÿ êîíâåéåð, êîòîðûé ïîçâîëÿåò âûïîëíèòü îäíîâðåìåííî òðè
  23. ïîñëåäîâàòåëüíûå  êîìàíäû,  ðàçìåðîì  2  áàéòà,  ëèáî  òðè  ñëîâà îäíîé êîìàíäû.
  24. Êîíâåéåð 68060 ïîçâîëÿåò âûïîëíèòü ñðàçó 4 êîìàíäû.
  25.  
  26.  3.   Êàê  ìîæíî  ìåíüøå  íàãðóæàéòå  ïàìÿòü.   Ò.å.   âî  âðåìÿêðèòè÷íûõ öèêëàõ
  27. ïðîãðàììû  âñå ïåðåìåííûå æåëàòåëüíî ðàçìåñòèòü â ðåãèñòðàõ, à íå çàïðàøèâàòü èõ
  28. èç  ïàìÿòè.   Çäåñü òàêæå âàæíî çàìåòèòü, ÷òî çàïèñü â ïàìÿòü áûñòðåå ñ÷èòûâàíèÿ
  29. èç íå¸.
  30.  
  31.  4.   Â ïðîãðàììàõ ñòàðàéòåñü ïîëüçîâàòüñÿ êîòîðîòêèìè ïåðåõîäàìè (bne.s, beq.s,
  32. è  ò.ï.).   Ïðè  âîçìîæíîñòè  ñòàðàéòåñü  çàãðóæàòü  ðåãèñòðû  ñïîñîáàìè áûñòðîé
  33. çàãðóçêè (êîìàíäû moveq) - ýòè êîðîòêèå êîìàíäû ðàçìåðîì îäíî ñëîâî (2 áàéòà).
  34.  
  35.  5.   Êàòåãîðè÷åñêè íå ðåêîìåíäóåòñÿ èñïîëüçîâàòü çàðàíåå ïîäãîòîâëåííûå áîëüøèå
  36. òàáëèöû  â  ïàìÿòè  (ñâûøå  4-8 êá) è ïðèìåíåíèÿ áîëüøèõ ðàñöèêëèâàíèé (óáèðàíèå
  37. îïåðàòîðîâ  öèêëà).   Ýòîò  ñïîñîá äà¸ò âûèãðûø íà 68000, à âîò íà áîëåå ñòàðøèõ
  38. ìîäåëÿõ ïðîöåññîðîâ ïðèðîñò â ñêîðîñòè áóäåò íåçíà÷èòåëüíûì.
  39.  
  40.  6.  Êàê ìîæíî ðåæå ïîëüçóéòåñü êîìàíäàìè äåëåíèÿ è óìíîæåíèÿ (divs, divu, muls,
  41. mulu  è  ò.ï.)  ýòî  î÷åíü  ìåäëåííûå  êîìàíäû,  à  ÷àñòü  ýòèõ  êîìàíä  è âîâñå
  42. îòñóòñòâóåò  â  68060 (ïðèìåíÿåòñÿ ïðîãðàììíàÿ ýìóëÿöèÿ).  Ïðèìåíÿòü ýòè êîìàíäû
  43. âî   âðåìÿêðèòè÷íûõ   öèêëàõ  êàòåãîðè÷åêè  íå  ðåêîìåíäóåòñÿ,  ýòî  ñóùåñòâåííî
  44. çàìåäëÿåò âûïîëíåíèå ïðîãðàììû.
  45.  
  46.  7.   Äëÿ  ïåðåáðîñêè áîëüøîãî êîëè÷åñòâà äàííûõ ìîæíî ïðèìåíÿòü êîìàíäû move16,
  47. îíè ïîÿâèëèñü íà÷èíàÿ ñ ïðîöåññîðà 68040.
  48.  
  49.                     Òåïåðü ïîäðîáíåå ïî êàæäîìó èç ïóíêòîâ.
  50.  
  51.  1.  Êýø êîìàíä ïîÿâëÿåòñÿ, íà÷èíàÿ ñ ïðîöåññîðà MC68020.  Åãî ðàçìåð ñîñòàâëÿåò
  52. 256  áàéò.   Êýø  äàííûõ  ïîÿâèëñÿ  ó  ïðîöåññîðà  MC68030  è  åãî ðàçìåð òàê æå
  53. ñîñòàâëÿåò  256 áàéò.  Ó 68040 îáà êýøà óâåëè÷åíû â ðàçìåðå äî 4096 áàéò.  68060
  54. îáëàäàåò äâóìÿ âîñüìèêèëîáàéòíûìè êýøàìè (8192).
  55.  Âñå îñíîâíûå öèêëû ñòàðàéòåñü óëîæèòü â êýø, ðàñ÷¸òû, ïåðåáðîñêè áîëüøèõ áëîêîâ
  56. äàííûõ, ðàáîòà ñ òàáëèöàìè è ò.ä.  äîëæíû â íåãî óêëàäûâàòüñÿ.
  57.  Äîïóñêàþòñÿ ðàñöèêëèâàíèÿ â ïðåäåëàõ <B>êýøà</B>.
  58.  
  59.  Ïðèìåð:
  60.  
  61. prtback_loop1
  62.     move.l (a0)+,a1
  63.     add.l d4,a1
  64.     move.l d0,d6
  65. prtback_loop
  66.     rept 20         ;ïîâòîðèòü 20 ðàç
  67.     move.l (a2)+,(a1)+
  68.     endr            ;êîìàíäó move.l (a2)+,(a1)+
  69.     dbf d6,prtback_loop
  70.     dbf d5,prtback_loop1
  71.  
  72.  Âîò  òàêîé  ïðîñòîé  öèêë  çàíèìàåò  50 áàéò.  Îí ëåãêî óêëàäûâàåòñÿ â êýø âñåõ
  73. ïðîöåññîðîâ.  (Âñå ïðèìåðû ïðèâîäÿòüñÿ èç ðåàëüíûõ ïðîãðàìì.  ïðèì.  àâòîðà).
  74.  
  75.  Åñëè  óëîæèòü  öèêë â êýø ôèçè÷åñêè íå ïîëó÷àåòñÿ, òî òîãäà ïîïûòàéòåñü ðàçáèòü
  76. åãî  íà  íåñêîëüêî  áîëåå  ìåëêèõ  öèêëîâ, óêëàäûâàþùèõñÿ â êýø.  Íà ýòîì ìåòîäå
  77. îñíîâàíû  êîíâåðòåðû  chunky  to  planar  äëÿ  68020/68030 ïðîöåññîðîâ, êîòîðûìè
  78. ïîëüçóþòñÿ âñå äåìîìåéêåðû.
  79.  
  80.  Ñ  êåøåì  äàííûõ  íåìíîãî  ïî  äðóãîìó.   Âñ¸,  ÷òî ñ÷èòûâàåòñÿ èç ïàìÿòè ëþáûì
  81. ìåòîäîì  àäðåñàöèè  ïîïàäàåò  â ýòîò êýø.  Íî â ýòîì êýøå ïðàêòè÷åñêè íåâîçìîæíî
  82. ðàçìåñòèòü  <U>óêàçàòåëè</U>  íà áëîêè äàííûõ èëè æå ïîñòîÿííûå ïåðåìåííûå (åñëè
  83. èõ ìíîãî - 100-200 áàéò).
  84.  
  85.  Ïðèìåð:
  86.  
  87.     move.l #tableaddr1,a0
  88.     move.l #tableperem,a1
  89.     move.l #new,a2
  90. loop1   move.l (a0)+,d2
  91.     move.l (a1)+,d0
  92.     lsr.l #3,d0
  93.     move.l (a1),d3
  94.     move.l (a3),d1
  95.     add.l d1,d0
  96.     move.d0,(a2)+
  97.     dbf d4,loop1
  98.  
  99.  Äàííûå  èç  a0 è a1 áóäóò îêàçâàòñÿ â êýøå äàííûõ è ïðè ïîâòîðíîì èñïîëüçîâàíèè
  100. ñ÷èòûâàòüñÿ îòòóäà.
  101.  
  102.  
  103.  2.   Ïðîöåññîð  çà îäèí ðàç ñ÷èòûâàåò 4 áàéòà (68020), íî äåëàåò ýòî ïî àäðåñàì
  104. âûðîâíåííûì ïî äëèííîìó ñëîâó.  Ïðèìåð:
  105.  
  106.     moveq.l #3,d1
  107.     add.l d1,d0
  108.  
  109.  Åñëè  ïåðâàÿ  êîìàíäà  áóäåò  âûðîâíåíà  ïîä äëèííîìó ñëîâó, òî ïðîöåññîð ñðàçó
  110. ñ÷èòàåò äâå êîìàíäû è âûïîëíèò èõ, íå çàòðà÷èâàÿ âðåìÿ íà âòîðóþ êîìàíäó.
  111.  Ñëåäèòå  çà äëèííîé êîìàíä, â ïðåäâûáîðêó ïîïàäàþò êîìàíäû ðàçìåðîì â äâà áàéòà.
  112. Âûðîâíÿòü êîìàíäû ìîæíî ïðè ïîìîùè ìíåìîíèêè àññåìáëåðà cnop 0,4.
  113.  
  114.  2.1 Êîíâååð, ïîÿâèâøèé â ïðîöåññîðå 68030 ïîçâîëèë âûïîëíÿòü îäíîâðåìåííî ñðàçó
  115. òðè êîìàíäû äëèííîé â ñëîâî, ò.å.  ýòîò ïðîöåññîð ìîæåò ñ÷èòàòü ñðàçó 6 áàéò èëè
  116. 3  ñëîâà.   À MC68060 ìîæåò êóäà áîëüøå - ýòîò ïðîöåññîð âåíåö CISC òåõíîëîãèè -
  117. ìîæåò çà îäèí òàêò âûïîëíèòü ñðàçó 4 êîìàíäû.
  118.  Ïðèìåð: 
  119.  
  120.     add.l d0,d0
  121.     add.l d0,d0
  122.     add.l d0,d0
  123.     add.l d0,d0 ;óìíîæåíèå ñîäåðæèìîãî d0 íà 16.
  124.  
  125.  Ýòè ÷åòûðå êîìàíäû ìîãóò áûòü âûïîëíåíû çà 1 (!) òàêò.
  126.  
  127.  3.    Íàãðóçêà   íà   ïàìÿòü   â   îñíîâíûõ   öèêëàõ  äîëæíà  áûòü  ìèíèìàëüíîé
  128. (ñ÷èòûâàíèå/çàïèñü   äàííûõ  è  ïåðåìåííûõ).   Ëó÷øå  âñ¸  çàðàíåå  ðàçëîæèòü  â
  129. ñâîáîäíûõ  ðåãèñòðàõ,  ïî  âîçìîæíîñòè  óêîðîòèòü  êîìàíäû,  ñîõðàíÿòü  ëó÷øå  â
  130. ðåãèñòðàõ, áåç èñïîëüçîâàíèÿ ñòåêà (movem).
  131.  
  132.  Ïðèìåð ñîõðàíåíèÿ ñ ïîñëåäóþùèì âîññòàíîâëåíèåì:
  133.  
  134. loop    move.l d0,d2    ;ñîõðàíÿåì d0 â d2
  135.     add.l (a0)+,d0
  136.     lsr.l #3,d0
  137.     move.l d0,(a1)+
  138.     move.l d2,d0    ;âîññòàíàâëèâàåì
  139.     dbf d3,loop
  140.  
  141.  Ïðèìåð óêîðà÷èâàíèÿ:
  142.  
  143.     move.l #80,a5   ;çàðàíåå çàãðóæàåì a5 ÷èñëîì
  144. c2f11   rept 2*step
  145.     movem.l (a0)+,d0-d4/d6-d7/a2-a4 ;read 40 byte
  146.     movem.l d0-d4/d6-d7/a2-a4,-(a1) ;write 40 byte
  147.     add.l a5,a1         ;óêîðà÷èâàíèå
  148.     endr
  149.     dbf d5,c2f11
  150.  
  151.  Åñëè  â  ýòîì  ñëó÷àå â a1 ñêëàäûâàòü ñ ÷èñëîì (#80), òî âìåñòî 2õ áàéò êîìàíäà
  152. çàéì¸ò  øåñòü  è  êðîìå  áîëåå  ìåäëåííîãî  èñïîëíåíèÿ,  íè  î êàêîì ïàðàëåëüíîì
  153. âûïîëíåíèè íå ìîæåò áûòü è ðå÷è.
  154.  
  155.  4.   Êîðîòêèå  ïåðåõîäû  (bcc.s, ãäå cc îäíî èç óñëîâèé) çàíèìàþò äâà áàéòà.  È
  156. åñòåñòâåííî  îíè  âïîëíÿþòüñÿ  áûñòðî.   Íî,  êàê ãîâîðèòñÿ, áåñïëàòíûé ñûð åñòü
  157. òîëüêî  â  ìûøåëîâêå.  Ýòî âñ¸ äîñòèãàåòñÿ çà ñ÷¸ò òîãî, ÷òî äàëüíîñòü ïåðåõîäîâ
  158. ñîñòàâëÿåò  128  áàéò  (íàçàä  èëè  âïåð¸ä).  È ñâÿçè ñ ýòèì âàø öèêë íåîáõîäèìî
  159. óêëàäûâàòü â 128 áàéò.
  160.  Âîîáùå  çà  êîìàíäàìè  ïåðåõîäà íàäî ñëåäèòü âíèìàòåëüíî:  îíè îòíèìàþò âðåìåíè
  161. áîëüøå  îáû÷íîãî  ò.ê.   ïðèõîäèòüñÿ ïåðåõîäèòü íà íîâûé àäðåñ.  Ïîýòîìó äàííîìó
  162. ôàêòîðó  íàäî óäåëèòü îñîáîå âíèìàíèå.  Åñëè íå ïîëó÷àåòñÿ èñïîëüçîâàòü êîðîòêèå
  163. ïåðåõîäû,  ïðèìåíÿéòå  êîìàíäû  dbf,  îíè  îäíîâðåìåííî ñîâìåùàþò â ñåáå êîìàíäû
  164. ïåðåõîäà  è óìåíüøåíèÿ ëþáîãî èç ðåãèñòðîâ d0-d7 è ìîãóò âûïîëíÿòü áîëåå äàëüíèå
  165. ïåðåõîäàìè, õîòü è çàíèìàþò â ïàìÿòè 4 áàéòà.
  166.  
  167.  4.1  Äëÿ  áûñòîé  çàãðóçêè  ðåãèñòðîâ  ïðèìåíÿéòå  êîìàíäû  moveq,  ýòè êîìàíäû
  168. ñïîñîáíû  çàãðóçèòü  â  ðåãèñòð ÷èñëî îò 0 äî 8ìè, ïðè÷¸ì îíè çàíèìàþò âñåãî äâà
  169. áàéòà  è  âûïîëíÿþòñÿ  áûñòðåå  îáû÷íîé çàãðóçêè (move).  Êðîìå áûñòðîé çàãðóçêè
  170. åñòü   áûñòðîå   ñëîæåíèå  (addq)  è  âû÷èòàíèå  (subq),  êîòîðûå  èìåþò  òå  æå
  171. õàðàêòåðèñòèêè, ÷òî è moveq (2 áàéòà, äèàïàçîí ÷èñåë îò 0 äî 8ìè).
  172.  
  173.  5.   Èñïîëüçîâàòü  áîëüøèå  òàáëèöû  è  ðàñöèêëèâàíèÿ ÍÅ ÐÅÊÎÌÅÍÄÓÅÒÑß !  Ëó÷øå
  174. ïðîèçâåñòè  âñå ðàñ÷¸òû â îñíîâíîì öèêëå, õîðîøî åãî ïðîîïòèìèçèðîâàâ, è óëîæèòü
  175. â  êýø,  ìèíèìèçèðîâàâ  îáðàùåíèÿ  ê  ïàìÿòè.   Ýòî  åñòåñòâåííî  êàñàåòñÿ  âñåõ
  176. ïðîöåññîðîâ,  èìåþùèõ  êýø.   Êàê  óæå  ïèñàëîñü, êýø-ïàìÿòü çíà÷èòåëüíî áûñòðåå
  177. âíåøíåé  ïàìÿòè,  ïðè÷¸ì  ñêîðîñòü âíåøíåé ïàìÿòè â öåëîì íå çàâèñèò îò ñêîðîñòè
  178. ïðîöåññîðà.   À  çíà÷èò  óáèðàòü îïåðàòîðû öèêëà íåöåëåñîîáðàçíî.  Ñúýêîíîìèâ íà
  179. ýòèõ îïåðàòîðàõ, ïðîãðàììà áóäåò âûíóæäåíà ðàáîòàòü òîëüêî âî âíåøíåé ïàìÿòè, ñî
  180. âñåìè âûòåêàþùèìè.
  181.  Îïåðàòîðû  ïåðåä  âïîëíåíèåì  ïîïàäàþò  â  êýø èç ïàìÿòè, è, åñëè ïåðåõîä áóäåò
  182. îñóùåñòâë¸í  íà  êîìàíäó,  êîòîðàÿ  íàõîäèòñÿ  â  êýøå, òî äàëåå âåñü öèêë áóäåò
  183. âûïîëíÿòüñÿ èç êýøà.
  184.  Òî æå è ñ áîëüøèìè òàáëèöàìè, âûáîðêà äàííûõ èç ïàìÿòè îãðàíè÷åíà å¸ ñêîðîñòüþ.
  185. Ò.å.   ïðîèçâåäÿ  çàðàíåå  âñå  ðàñ÷¸òû  è  ñ÷èòûâàÿ  äàííûå èç ïàìÿòè âû áóäåòå
  186. îãðàíè÷åíû ñêîðîñòüþ ïàìÿòè.  À åñëè âû õîðîøî ïðîîïòèìèçèðóåòå ðàñ÷¸òû, óëîæèòå
  187. â  êýø,  òî íà áîëåå áûñòðîäåéñòâóþùèì ïðîöåññîðå ïðèðîñò â ñêîðîñòè áóäåò áîëåå
  188. çíà÷èòåëüíûì.
  189.  Ýòè  ñîïîñîáû  áûëè  ýôôåêòèâíû íà 68000 è åñëè óæ íàäî âûæàòü èç ìàøèíû ñ ýòèì
  190. ïðîöåññîðîì âñ¸ âîçìîæíîå, äåëàéòå îòäåëüíóþ âåðñèþ.
  191.  Åù¸  ìîìåíò  -  <B>íå  ïðèìåíÿéòå  ñàìîìîäèôèêàöèþ  êîäà</B>  !   Ðàíüøå ìíîãèå
  192. äåìîìåéêåðû  ãðåøèëè  èçìåíåíèåì  ó÷àñòêîâ  êîäà ïðîãðàììû ñàìîé ïðîãðàììîé, ýòî
  193. äàâàëî  ïðèðîñò  â ñêîðîñòè äëÿ 68000, à âîò äëÿ ïðîöåññîðîâ ñ êýøåì ýòîò ïîäõîä
  194. çàïðåù¸í.   Åñëè  òàêîé  ó÷àñòîê êîäà îêàæåòñÿ â êýøå è íà÷í¸ò âûïîëíÿòüñÿ, òî â
  195. ñàìîì  êýøå ÍÈÊÀÊÎÉ ìîäèôèêàöèè ïðîèñõîäèòü íå áóäåò â ñèëó åãî îñîáåííîñòåé.  À
  196. ýòî  çíà÷èò,  ÷òî  ïðîãðàììà  íà÷í¸ò  ðàáîòàòü íå êàê çàäóìûâàëîñü!  Ïîñëåäñòâèÿ
  197. ìîãóò áûòü êàòàñòðîôè÷åñêèìè.
  198.  
  199. 6.   Êîìàíäû  äåëåíèÿ  è  óìíîæåíèÿ  (divs, divu, muls, mulu è ò.ï.) âûïîëíÿþòñÿ
  200. ìåäåëííî,  ïîýòîìó äëÿ óìíîæåíèÿ/äåëåíèÿ íà ÷èñëà, êðàòíûå ñòåïåíÿì äâîéêè ìîæíî
  201. ïðèìåíèòü   îïåðàòîðû  lsr  (äåëåíèå),  lsl  èëè  ïðîñòî  êîìàíäû  ñëîæåíèÿ  äëÿ
  202. óìíîæåíèÿ.
  203.  
  204.  Ïðèìåðû:
  205.  
  206.   Äëÿ óìíîæåíèÿ íà 16 ìîæíî ïðèìåíèòü 4 ñëîæåíèÿ.
  207.  
  208.     add.l d0,d0 ;íà 2
  209.     add.l d0,d0 ;íà 4
  210.     add.l d0,d0 ;íà 8
  211.     add.l d0,d0 ;íà 16
  212.  
  213.   Ýòî æå ìîæíî ïðîäåëàòü îäíîé êîìàíäîé lsl.
  214.  
  215.     lsl.l #4,d0
  216.  
  217.  Ñêîðîñòü âûïîëíåíèÿ ýòîãî îïåðàòîðà çàâèñèò îò ÷èñëà ñäâèãàåìûõ áèòîâ, ò.å.  êî
  218. âðåìåíè  âïîëíåíèÿ  êîìàíäû íàäî áóäåò äîáàâèòü åù¸ è êîë-âî ñìåùàåìûõ áèò.  È â
  219. íåêîòîðûõ ñëó÷àÿõ ýòîò âàðèàíò ìîæåò îêàçàòüñÿ ìåäëåííåå ïðåäûäóùåãî.
  220.  
  221.    À ÷òî  äåëàëòü  åñëè  íàäî óìíîæèòü ê ïðèìåðó íà 12 ?  Ñïðîñèòü äîòîøíûé
  222. ÷èòàòåëü. À âîò, ÷òî:
  223.  
  224.     move.l d0,d1 ;ñîõðàíÿåì d0 â d1
  225.     add.l d0,d0 ;óìíîæàåì íà 2
  226.     add.l d1,d0 ;à âîò òàê ìû ïîëó÷àåì óìíîæåíèå íà 3 !
  227.     add.l d0,d0 ;äàëåå óìíîæåíèå íà 6
  228.     add.l d0,d0 ;è íàêîíåö íà 12
  229.  
  230.  Äåëåíèå ìîæíî îñóùåñòâèòü ñ ïîìîùüþ êîìàíäû lsr. Íàïðèìåð lsr.l #2,d0, äà¸ò
  231. äåëåíèå íà 4, à lsr.l #4,d0 äà¸ò äåëåíèå íà 16òü.
  232.  
  233.  6.1   Â   MC68060  äëÿ  óâåëè÷åíèÿ  ïðîèçâîäèòåëüíîñòè  áûëè  óáðàíû  íåêîòîðûå
  234. öåëî÷èñëåííûå  êîìàíäû äëÿ òîãî, ÷òîáû ïîäíÿòü îáùóþ ïðîèçâîäèòåëüíîñòü.Äëÿ ýòèõ
  235. êîìàíä  ñóùåñòâóåò  ïðîãðàììíàÿ  ýìóëÿöèÿ  (68060.library).   À  ýòî çíà÷èò, ÷òî
  236. ïðèìåíÿòü  ýòè  êîìàíäû  íå ðåêîìåíäóåòñÿ ò.ê.  ýìóëÿöèÿ â ëþáîì ñëó÷àå ìåäëåíåå
  237. íåïîñðåäñòâåííîãî âûïîëíåíèÿ.  Âîò ýòè êîìàíäû:
  238.  
  239. divu.l <ea>,Dr:Dq ;ãäå Dr,Dq ðåãèñòð èç äèàïàçîíà D0-D7
  240. divs.l <ea>,Dr:Dq ;---'---
  241. mulu.l <ea>,Dr:Dq ;---'---
  242. muls.l <ea>,Dr:Dq ;---'---
  243. movep Dx,(d16,Ay) ;ãäå Dx ðåãèñòð èç äèàïàçîíà D0-D7, Ay - A0-A7
  244. movep (d16,Ay),Dx ;---'---
  245. chk2 <ea>,Rn      ;ãäå Rn ðåãèñòð èç äèàïàçîíà A0-A7,D0-D7
  246. cmp2 <ea>,Rn      ;---'---
  247. cas2 Dc1:Dc2,Du1:Du2,(Rn1:Rn2) ;Dc,Du - D0-D7, Rn - D0-D7,A0-A7
  248. cas Dc:Du,<ea>    ;Dc,Du - D0-D7
  249.  
  250. <ea> - ëþáîé èç ìåòîäîâ àäðåñàöèè.
  251.  
  252.  7.   Â  68040  ïîÿâèëèñü íîâûå êîìàíäû äëÿ ïåðåáðîñêè äàííûõ, ñïîñîáíûå çà îäèí
  253. ðàç ïåðåáðîñèòü 16 áàéò, îíè äàþò íåáîëüøîå óñêîðåíèå íà ïåðåáðîñêå äàííûõ.  Âîò
  254. èõ ïîëíûé ñïèñîê:
  255.  
  256. move16  (Ax)+,(Ay)+  
  257. move16  (xxx).l,(An) 
  258. move16  (xxx).l,(An)+
  259. move16  (An),(xxx).l 
  260. move16  (An)+,(xxx).l
  261.  
  262. ãäå Ax è An ëþáîé ðåãèñòð èç äèàïàçîíà A0-A7
  263.  
  264. Âñå  êîìàíäû  ìîãóò  ïåðåáðàñûâàòü  òîëüêî  16  áàéò è òîëüêî ïî àäðåñàì êðàòíûì
  265. 16-òè,  íà  áîëüøèõ  áëîêàõ äàííûõ îíè äàþò äåéñòâèòåëüíî ïðèðîñò â ñêîðîñòè, íî
  266. îãðàíè÷åíû äàííûìè ôàêòîðàìè.  Èõ ìîæíî ïðèìåíÿòü äëÿ áîëüøèõ ïåðåáðîñîâ äàííûõ.
  267.  
  268.  Levitator/team PowerAmiga