You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Âçëîì<br />
Ðàäèîïåðåõâàò<br />
RainFerocious & Zealot<br />
ÕÀÊÅÐ\¹36\Äåêàáðü\2001<br />
Ðàäèî ïåðåõâàò<br />
Çâó÷èò Need For Speed: Porsche Unleased - Cold fusion<br />
power (soundtrack)<br />
D.J.: Çäðàâñòâóéòå, óâàæàåìûå ðàäèîñëóøàòåëè!<br />
 ýôèðå ïåðåäà÷à "LLP", ÷òî îçíà÷àåò<br />
"Low Level Programming". Íàø ñåãîäíÿøíèé<br />
ãîñòü - Zeal0t (Ãðîìêèå íåñêîí÷àåìûå àïëîäèñìåíòû<br />
ïîä ìóçûêó Fluke-Absurd). Hi<br />
Zeal0t!!!<br />
Z.: Hi!!!<br />
D.J.: Î ÷åì âû íàì õîòèòå ñåãîäíÿ<br />
ðàññêàçàòü<br />
Z.: ß õîòåë áû ðàññêàçàòü î íåáîëüøîé<br />
ïðîãðàììêå, êîòîðàÿ çàìåäëÿåò õîä<br />
ñèñòåìíûõ ÷àñîâ â Windows.<br />
D.J.: !!<br />
Z.: Íó, òî åñòü ýòî ñêîðåå ïðèìåð òàêîé ïðîãðàììû,<br />
êîòîðàÿ èëëþñòðèðóåò, íà ÷òî ñïîñîáåí<br />
àññåìáëåð. Ýòî áóäåò ïîëåçíî êàê íà÷èíàþùèì,<br />
òàê è ïðîäâèíóòûì ïðîãðàììèñòàì.<br />
D.J.: Íó õîðîøî, ðàññêàæèòå ïîïîäðîáíåé,<br />
plz.<br />
Z.: Íà÷íåì ñ òîãî, ÷òî ïîïûòàåìñÿ ïðåäñòàâèòü, ÷òî<br />
ýòî âîîáùå òàêîå - çàìåäëåíèå èëè óñêîðåíèå âðåìåíè.<br />
Ïðåäñòàâèì ñåáå ñîáûòèÿ îò ìûøè.<br />
Íàïðèìåð, ñèñòåìà äîëæíà ðàñïîçíàâàòü,<br />
êîãäà ïðîèçîøëî ñîáûòèå<br />
"äâîéíîé ùåë÷îê", à êîãäà áûëî<br />
äâà ïîñëåäîâàòåëüíûõ îäèíàðíûõ<br />
íàæàòèÿ. Ïîíÿòíî, ÷òî â ïåðâîì<br />
ñëó÷àå èíòåðâàë ìåæäó íàæàòèÿìè<br />
áûë ìåíüøå, ïîýòîìó ñèñòåìíûå<br />
÷àñû îáíîâëÿëèñü ÷àùå, è<br />
ìû ìîæåì ðàçëè÷èòü ñîáûòèÿ.<br />
D.J.: Ðå÷ü íàâåðíî èäåò î òàéìåðå<br />
Z.: Âåðíî, cèñòåìíûå ÷àñû îáíîâëÿþòñÿ ñ ïîìîùüþ<br />
ñïåöèàëüíîãî óñòðîéñòâà - òàéìåðà, âõîäÿùåãî â ñîñòàâ<br />
ëþáîé êîìïüþòåðíîé ñèñòåìû. Òàéìåð - âåñüìà<br />
ñëîæíàÿ ñèñòåìà, âêëþ÷àþùàÿ â ñåáÿ öåëûõ òðè óñòðîéñòâà<br />
- òðè êàíàëà òàéìåðà, êàæäûé èç êîòîðûõ ìîæåò<br />
ðàáîòàòü â îäíîì èç øåñòè ðåæèìàõ.<br />
D.J.: Íàâåðíîå è óïðàâëÿòü èì ñëîæíî<br />
Z.: Âñå â ìèðå îòíîñèòåëüíî. Óïðàâëåíèå òàéìåðîì<br />
îñóùåñòâëÿåòñÿ ïóòåì âûâîäà îäíîãî áàéòà â ïîðò<br />
43h. Ðàññìîòðèì íàçíà÷åíèå áèò â ýòîì áàéòå.<br />
áèòû 7-6: åñëè íå 11 - íîìåð ïðîãðàììèðóåìîãî êàíàëà<br />
(ìû ðàññìîòðèì ïðîãðàììèðîâàíèÿ êàíàëà 0)<br />
áèòû 5-4:<br />
00 - ôèêñàöèÿ òåêóùåãî çíà÷åíèÿ ñ÷åò÷èêà<br />
01 - ÷òåíèå/çàïèñü òîëüêî ìëàäøåãî áàéòà<br />
10 - ÷òåíèå/çàïèñü òîëüêî ñòàðøåãî áàéòà<br />
11 - ÷òåíèå/çàïèñü ñíà÷àëà ìëàäøåãî, à ïîòîì ñòàðøåãî<br />
áàéòà<br />
áèòû 3-1: ðåæèì ðàáîòû êàíàëà (âñåãî èõ øåñòü, íî<br />
ìû ðàññìîòðèì òîëüêî ðåæèì 3)<br />
(011) - ãåíåðàòîð ïðÿìîóãîëüíûõ èìïóëüñîâ, â êîòîðîì<br />
ðàáîòàþò ïî óìîë÷àíèþ êàíàëû 0 è 2 òàéìåðà.<br />
áèò 0: ôîðìàò ñ÷åò÷èêà:<br />
0 - äâîè÷íîå - øåñòíàäöàòèáèòíîå ÷èñëî (0000-<br />
52 Íüþñû<br />
1<br />
Ôåððóì<br />
< Folder1><br />
0FFFFh)<br />
1 - äâîè÷íîå - äåñÿòè÷íîå ÷èñëî (000-9999)<br />
D.J.: Ìû ïðî DOS èëè Windows<br />
Z.: Ñíà÷àëà êàê áûëî, ïîòîì êàê åñòü. Èòàê, â ñòàðîé<br />
äîáðîé ñèñòåìå MS-DOS êàíàë 0 òàéìåðà ãåíåðèë<br />
ïðåðûâàíèå IRQ0 ñ ÷àñòîòîé ïðèáëèçèòåëüíî 18.2 ðàçà<br />
â ñåêóíäó. Äëÿ ýòîãî íåîáõîäèìî âûïîëíèòü ñëåäóþùèå<br />
äåéñòâèÿ:<br />
1 - â ïîðò 43h òàéìåðà íóæíî ïîñëàòü êîìàíäó<br />
00110110b, òî åñòü óñòàíîâèòü ðåæèì 3 äëÿ êàíàëà 0,<br />
çàïèñü ñíà÷àëà ìëàäøåãî, ïîòîì ñòàðøåãî áàéòà è<br />
2 - ïåðåñëàòü áàéò 0FFh â ïîðò 42h (ìëàäøèé áàéò)<br />
3 - ïåðåñëàòü áàéò 0FFh â ïîðò 42h (ñòàðøèé áàéò)<br />
D.J.: À!!! Âû èíèöèàëèçèðóåòå íà÷àëüíîå çíà-<br />
÷åíèå ðåãèñòðà-ñ÷åò÷èêà<br />
Z.: Äà, è ðàâíî îíî 0FFFFh. Ïîñëå ýòîãî òàéìåð íåìåäëåííî<br />
óìåíüøàåò ââåäåííîå ÷èñëî ê íóëþ ñî ñêîðîñòüþ<br />
1 193 180 ðàç â ñåêóíäó. Ïðè äîñòèæåíèè<br />
ñ÷åò÷èêîì íóëÿ êàíàë 0 òàéìåðà âûçûâàåò ïðåðûâàíèå<br />
IRQ0, êîòîðîå è îáíîâëÿåò ñèñòåìíûå ÷àñû. Îòñþäà<br />
ñëåäóåò î÷åâèäíûé âûâîä: åñëè ìû õîòèì óáûñòðèòü<br />
äâèæåíèå âðåìåíè, òî ìîæíî çàäàòü äðóãîå<br />
íà÷àëüíîå çíà÷åíèå, íàïðèìåð, 7FFFh è òåì ñàìûì<br />
çàñòàâèòü åãî ãåíåðèòü IRQ0 ÷àùå...<br />
D.J.: Íàïîìèíàþ ñëóøàòåëÿì, ÷òî ìû â 16-<br />
ðè÷íîé ñèñòåìå èñ÷èñëåíèÿ.<br />
Z.: ...Íî çàñòàâèòü äâèãàòüñÿ ñèñòåìíîå âðåìÿ ìåäëåííåå,<br />
òîëüêî ïðîãðàììèðóÿ òàéìåð, ìû óæå íå ñìîæåì,<br />
òàê êàê 0FFFFh ìàêñèìàëüíîå çíà÷åíèå äëÿ ðåãèñòðà-ñ÷åò÷èêà.<br />
Âìåñòî ýòîãî ìîæíî ïåðåõâàòèòü<br />
ïðåðûâàíèå, êîòîðîå ñîîòâåòñòâóåò IRQ0 (ýòî àïïàðàòíîå<br />
ïðåðûâàíèå), äëÿ DOS 08h (ýòî ïðîãðàììíîå<br />
ïðåðûâàíèå) è, íàïðèìåð, öèêëè÷åñêè â ïåðâûé ðàç<br />
ïåðåäàâàòü óïðàâëåíèå ñèñòåìíîìó îáðàáîò÷èêó ñ<br />
ïîñëåäóþùèì âîçâðàòîì â ïðåðâàííóþ ïðîãðàììó, à<br />
â ñëåäóþùèé ðàç ïðîèçâåñòè ïðîñòîé âîçâðàò èç ïðåðûâàíèÿ<br />
êîìàíäîé IRET.  ïåðâîì ñëó÷àå ïðîèñõîäèò<br />
îáíîâëåíèå ñèñòåìíîãî âðåìåíè, à âî âòîðîì - íåò,<br />
ïîýòîìó îíî òå÷åò â äâà ðàçà ìåäëåííåé.<br />
D.J.: À êàê æå â windows<br />
Z.: Íó, ïðî Win2K ðàçãîâîð îòäåëüíûé, ÿ îïèøó 9x. C<br />
ïðèõîäîì îïåðàöèîííîé ñèñòåìû Windows, îäíàêî,<br />
âñå èçìåíèëîñü. Òåïåðü îïåðàöèîíêà ìîæåò ìåíÿòü<br />
íà÷àëüíîå çíà÷åíèå ðåãèñòðà-ñ÷åò÷èêà êàê åé âçäóìàåòñÿ<br />
â çàâèñèìîñòè îò ïîòðåáíîñòåé ïðèêëàäíûõ çàäà÷.<br />
D.J.: Ýòî Ãåéòñ âî âñåì âèíîâàò...<br />
Z.: Íåò, îí íå âèíîâàò, õîòÿ... Áîã ñ íèì. Íó âîò, ïåðåïðîãðàììèðîâàííûé<br />
íàìè òàéìåð ñîõðàíèò ñâîå<br />
ñîñòîÿíèå òîëüêî äî ïåðâîãî îáðàùåíèÿ ê íåìó îïåðàöèîííîé<br />
ñèñòåìû. Äëÿ èçìåíåíèÿ ñêîðîñòè òå÷åíèÿ<br />
âðåìåíè íàì íåîáõîäèìî òàêæå èñïîëüçîâàòü ïåðåõâàò<br />
ïðåðûâàíèé. Â ìîåì ïðèìåðå ïðîãëàòûâàåòñÿ<br />
êàæäîå òðåòüå ïðåðûâàíèå îò òàéìåðà, òî åñòü ïðîèñõîäèò<br />
âîçâðàò â ïðåðâàííóþ ïðîãðàììó áåç âûçîâà<br />
ñèñòåìíîãî îáðàáîò÷èêà.<br />
D.J.: Â âàøåì ïðèìåðå<br />
Z.: ß èñõîäíèê ïðèíåñ ñ ñîáîé... Ïîòîì ïîêàæó...<br />
< Âçëîì >20/12\01<br />
D.J.: À!!! Sorry! Continue, plz!!<br />
Z.: Ñëåäóåò ïîìíèòü, ÷òî ïðîãðàììà îêàæåò âëèÿíèÿ<br />
ÒÎËÜÊÎ íà ñîáûòèÿ, ñèíõðîíèçèðóåìûå ïî òàéìåðó.<br />
Íàïðèìåð, íà ñêîðîñòü âîñïðîèçâåäåíèå çâóêà îíà íå<br />
îêàæåò íèêàêîãî âëèÿíèÿ, òàê êàê ñèíõðîíèçàöèÿ èäåò<br />
íå ÷åðåç òàéìåð, à ÷åðåç DSP (Digital Sygnal Process)<br />
çâóêîâîé êàðòî÷êè.<br />
 ïðîãå èñïîëüçóåòñÿ ïåðåõâàò ïðåðûâàíèÿ INT3 äëÿ<br />
âûõîäà íà íóëåâîå êîëüöî çàùèòû. Ó ýòîãî ïðåðûâàíèÿ<br />
DPL=3, òî åñòü åãî ìîæíî âûçûâàòü ñ ëþáûì<br />
óðîâíåì ïðèâèëåãèé. VMM (Virtual Memory<br />
Managment) ñåðâèñîì PageAllocate âûäåëÿåì ìåñòî â<br />
ñèñòåìíîé îáëàñòè ïàìÿòè è ïèõàåì... ììì... çàïèõèâàåì...<br />
â îáùåì, êëàäåì òóäà íàø îáðàáîò÷èê ïðåðûâàíèé<br />
îò òàéìåðà. Òàê êàê êàæäîå òðåòüå ïðåðûâàíèå<br />
îò òàéìåðà "òåðÿåòñÿ", òî è ïðîöåññîð çàìåäëÿåòñÿ<br />
íà òðåòü.<br />
Ïðîãà íå áóäåò ðàáîòàòü íà Windows NT/2k, òàê êàê<br />
ïðåðûâàíèÿ òàì íàäåæíî çàùèùåíû îò ïåðåõâàòà<br />
ïðèêëàäíûìè ïðîãðàììàìè... Ïîêà...<br />
D.J.: ×òî, ïðîñòèòå!!<br />
Z.: ß â ñìûñëå ðóêè íå äîòÿíóëèñü äî Win2K åùå...<br />
D.J.: ßñíî.<br />
Z.: Âîò âàì èñõîäíèê.<br />
D.J.: Î, ñïàñèáî!!! Ïîêàæó æåíå, ïóñòü òîæå<br />
ïðèîáùàåòñÿ... Íó è íà ñàéò âûëîæèì, êîíå÷íî...<br />
Z.: Äà, ÷óòü íå çàáûë!!! Êîãäà êîìïèëüíåòå èñõîäíèê,<br />
ïîëó÷èòå exe-ôàéë...<br />
D.J.: Íå ìîæåò áûòü! :))<br />
Z.: ...êîòîðûé ïðè ïîâòîðíîì çàïóñêå ñíîâà çàìåäëèò<br />
ïðîöåññîð îò óæå îñòàâøåãîñÿ "áûñòðîäåéñòâèÿ".<br />
D.J.: Êðóòî!!!<br />
Z.: Íó ó ìåíÿ ïîêà âñå.<br />
D.J.: Áëàãîäàðþ âàñ çà ñòîëü èíòåðåñíûé ðàññêàç!<br />
Íà ñëåäóþùåé íåäåëå ìû âàñ îáÿçàòåëüíî<br />
åùå ïðèãëàñèì äëÿ ïðîñâåùåíèÿ íàðîäà, î<br />
÷åì ðàññêàæåòå<br />
Z.: ß, ïîæàëóé, çàòðîíó òåìó êëîíèðîâàíèÿ.<br />
D.J.: ÌÌÌ... ß äóìàþ, ñîîáðàæàþùèé íàðîä<br />
ïîíÿë.<br />
Z.: Auf wiedersehen!!!<br />
2 PC_Zone 3 X-Ñòèëü<br />
D.J.: Good Luck, Man!!! Íà ýòîì ìû çàêàí÷èâàåì<br />
íàøó òðàíñëÿöèþ â ïðîñòðàíñòâåííîì<br />
ýôèðå, äî ñêîðûõ âñòðå÷, mein liebe friends!!!<br />
4 Âçëîì