31.12.2014 Views

Скачать - Xakep Online

Скачать - Xakep Online

Скачать - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ÞÍÈÒÛ ÊÐÅÀÒÈÔÔ ÊÎÄÈÍÃ UNIXOID ÑÖÅÍÀ ÂÇËÎÌ ÈÌÏËÀÍÒ PC_ZONE FERRUM<br />

ÍÜÞÑÛ<br />

HELLO<br />

WORLD<br />

118<br />

64-áèòíûé ïðèâåò<br />

32-ÁÈÒÍÀß ÝÏÎÕÀ ÓÕÎÄÈÒ Â ÏÐÎØËÎÅ, ÑÄÀ-<br />

ÂÀßÑÜ ÏÎÄ ÍÀÒÈÑÊÎÌ ÍÎÂÛÕ ÈÄÅÉ È ÏËÀÒ-<br />

ÔÎÐÌ. ÎÁÀ ÔËÀÃÌÀÍÀ ÐÛÍÊÀ (INTEL È AMD)<br />

ÏÐÅÄÑÒÀÂÈËÈ 64-ÁÈÒÍÛÅ ÀÐÕÈÒÅÊÒÓÐÛ,<br />

ÎÒÊÐÛÂÀÞÙÈÅ ÄÂÅÐÜ Â ÌÈÐ ÁÎËÜØÈÕ ÑÊÎ-<br />

ÐÎÑÒÅÉ È ÏÐÎÈÇÂÎÄÈÒÅËÜÍÛÕ ÖÏ. ÝÒÎ ÍÀÑ-<br />

ÒÎßÙÈÉ ÏÐÎÐÛÂ — ÍÎÂÛÅ ÐÅÃÈÑÒÐÛ, ÍÎ-<br />

ÂÛÅ ÐÅÆÈÌÛ ÐÀÁÎÒÛ… ÏÎÏÐÎÁÓÅÌ Ñ ÍÈÌÈ<br />

ÐÀÇÎÁÐÀÒÜÑß ÌÛ ÐÀÑÑÌÎÒÐÈÌ ÀÐÕÈÒÅÊÒÓ-<br />

ÐÓ AMD64 (ÎÍÀ ÆÅ X86-64) È ÏÎÊÀÆÅÌ,<br />

ÊÀÊ Ñ ÍÅÉ ÁÎÐÎÒÜÑß | Êðèñ Êàñïåðñêè àêà ìûùúõ<br />

Àðõèòåêòóðà x86-64<br />

ïîä ñêàëüïåëåì<br />

àññåìáëåðùèêà<br />

64-áèòíûé ëåéáë — çâó÷èò âîçáóæäàþùå, õîòÿ<br />

âñåãî ëèøü õèòðûé ìàðêåòèíãîâûé òðþê, ñêðûâàþùèé<br />

íå òîëüêî äîñòîèíñòâà, íî è íåäîñòàòêè.<br />

Íàì äàðîâàíû 64-áèòíûå îïåðàíäû è 64-áèòíàÿ<br />

àäðåñàöèÿ. Êàçàëîñü áû, ëèøíèå<br />

ðàçðÿäû êàðìàí íå òÿíóò è åñëè íå<br />

ïðèãîäÿòñÿ, òî, ïî êðàéíåé ìåðå, íå<br />

ïîìåøàþò. Òàê âåäü íåò! Ñ ðîñòîì<br />

ðàçðÿäíîñòè óâåëè÷èâàåòñÿ è äëèíà ìàøèííûõ êîìàíä, à çíà÷èò, âðåìÿ èõ<br />

çàãðóçêè/äåêîäèðîâàíèÿ è ðàçìåðû ïðîãðàììû, ïîýòîìó äëÿ äîñòèæåíèÿ<br />

íå õóäøåé ïðîèçâîäèòåëüíîñòè 64-áèòíûé ïðîöåññîð äîëæåí èìåòü áîëåå<br />

áûñòðóþ ïàìÿòü è áîëåå åìêèé êýø. Ýòî ðàç.<br />

64-áèòíûå öåëî÷èñëåííûå îïåðàíäû ñòàíîâÿòñÿ þçàáåëüíû òîëüêî ïðè îáðàáîòêå<br />

÷èñåë ïîðÿäêà 2^33+ (8.589.934.592) è âûøå. Òàì, ãäå 32-áèòíîìó<br />

ïðîöåññîðó òðåáóåòñÿ íåñêîëüêî òàêòîâ, 64-áèòíûé ñïðàâëÿåòñÿ çà îäèí. Íî<br />

ãäå òû âèäåë òàêèå ÷èñëà â äîìàøíèõ è îôèñíûõ ïðèëîæåíèÿõ Íå çðÿ æå<br />

èíæåíåðû èç Intel ïîøëè íà ñîêðàùåíèå ðàçðÿäíîñòè ÀËÓ (àðèôìåòè÷íîãîëîãè÷åñîêãî<br />

óñòðîéñòâà), øèðèíà êîòîðîãî â Pentium-4 ñîñòàâëÿåò âñåãî 16<br />

áèò ïðîòèâ 32-õ áèò â Pentium-III. Ýòî íå çíà÷èò, ÷òî Pentium-4 íå ìîæåò îáðàáàòûâàòü<br />

32-ðàçðÿäíûå ÷èñëà. Ìîæåò. Òîëüêî îí òðàòèò íà íèõ áîëüøå<br />

âðåìåíè, ÷åì Pentium-III. Íî ïîñêîëüêó ïðîöåíò ïîäëèííî 32-ðàçðÿäíûõ ÷èñåë<br />

(òî åñòü òàêèõ, ÷òî èñïîëüçóþò ñâûøå 16 áèò) â äîìàøíèõ ïðèëîæåíèÿõ<br />

îòíîñèòåëüíî íåâûñîê, ïðîèçâîäèòåëüíîñòü ïàäàåò íåçíà÷èòåëüíî. Çàòî ÿäðî<br />

ñîäåðæèò ìåíüøå òðàíçèñòîðîâ, âûäåëÿåò ìåíüøå òåïëà è ëó÷øå ðàáîòàåò<br />

íà ïîâûøåííîé òàêòîâîé ÷àñòîòå — â öåëîì ýôôåêò ïîëîæèòåëüíûé.<br />

64-áèòíàÿ ðàçðÿäíîñòü… Ïîìèëóé! Àäðåñîâàòü 18.446.744.073.709.551.616<br />

áàéò ïàìÿòè íå íóæíî äàæå Microsoft'ó ñî âñåìè åãî ãðàôè÷åñêèìè çàâîðîòàìè!<br />

Èç 4-õ Ãáàéò àäðåñíîãî ïðîñòðàíñòâà Windows Processional è<br />

Windows Server òîëüêî 2 Ãáàéòà âûäåëÿþò ïðèëîæåíèÿì.<br />

3 Ãáàéòà âûäåëÿåò ëèøü Windows Advanced Server, è íå ïîòîìó, ÷òî áîëüøå<br />

âûäåëèòü íåâîçìîæíî! x86-ïðîöåññîðû ñ ëåãêîñòüþ àäðåñóþò âïëîòü<br />

äî 16 Ãáàéò (ïî 4 Ãáàéòà íà êîä, äàííûå, ñòåê è êó÷ó), îïÿòü-òàêè îáõîäÿñü<br />

ìèíèìàëüíîé ïåðåñòðîéêîé îïåðàöèîííîé ñèñòåìû! Ïî÷åìó æå äî<br />

ñèõ ïîð ýòî íå áûëî ñäåëàíî Ïî÷åìó ìû ñèäèì íà æàëêèõ 4-õ Ãáàéòàõ<br />

èç êîòîðûõ ðåàëüíî äîñòóïíû òîëüêî äâà! Äà ïîòîìó, ÷òî áîëüøå íèêîìó<br />

íå íóæíî! Ñèñòåìó, àäðåñóþùóþ 16 Ãáàéò, ïðîñòî òàê íå ïðîäàøü, êîãî<br />

ýòè ãèãàáàéòû èíòåðåñóþò Âîò 64 áèòà — ñîâñåì äðóãîå äåëî!<br />

Ñðàâíèâàòü 32- è 64-áèòíûå ïðîöåññîðû áåññìûñëåííî! Åñëè 64-áèòíûé ïðîöåññîð<br />

íà äîìàøíåì ïðèëîæåíèè îêàçûâàåòñÿ áûñòðåå, òî îòíþäü íå çà ñ÷åò<br />

ñâîåé 64-áèòíîñòè, à áëàãîäàðÿ ñîâåðøåííî íåçàâèñèìûì îò íåå êîíñòðóêòèâíûì<br />

óõèùðåíèÿì, íà êîòîðûõ èíæåíåðû åäâà íå ðàçîðâàëè ñåáå çàäíèöû!<br />

Âïðî÷åì, íå áóäåì î ãðóñòíîì. 64 áèòà âñå ðàâíî âîéäóò â íàøó æèçíü.<br />

Äëÿ íåêîòîðûõ çàäà÷ îíè î÷åíü äàæå íè÷åãî. Âîò, íàïðèìåð, êðèïòîãðàôèÿ.<br />

64 áèòà — ýòî æå 8 áàéò! 8-ñèìâîëüíûå ïàðîëè ìîæíî ïîëíîñòüþ<br />

óìåñòèòü â îäèí ðåãèñòð, íå îáðàùàÿñü ê ïàìÿòè, ÷òî äàåò íåâåðîÿòíûé<br />

ðåçóëüòàò! Ñêîðîñòü ïåðåáîðà óâåëè÷èâàåòñÿ ÷óòü ëè íå íà ïîðÿäîê! Íó,<br />

òàê ÷åãî æå ìû æäåì! Âïåðåä! Íà øòóðì 64-áèòíûõ âåðøèí!<br />

[÷òî íàì ïîíàäîáèòñÿ] Äëÿ ïðîãðàììèðîâàíèÿ â 64-ðåæèìå æåëàòåëüíî<br />

èìåòü êîìïüþòåð ñ ïðîöåññîðîì AMD Athlon FX èëè Opertorn, íî<br />

ìîæíî îáîéòèñü è ýìóëÿòîðîì. Ñóùåñòâóåò íå òàê ìíîãî ýìóëÿòîðîâ<br />

ïîä x86-64 ïëàòôîðìó è âñå îíè íåäîäåëàííûå è æóòêî áàæíûå, íî äëÿ<br />

çíàêîìñòâà ñ AMD 64 èõ áóäåò âïîëíå äîñòàòî÷íî.<br />

Áîëüøîé ïîïóëÿðíîñòüþ ïîëüçóåòñÿ áåñïëàòíûé ýìóëÿòîð BOCHS (â ïðîñòîðå÷èè<br />

íàçûâàåìûé áîðùîì), ðàñïðîñòðàíÿåìûé â èñõîäíûõ òåêñòàõ.<br />

Ïîääåðæêà àðõèòåêòóðû x86-64 âïåðâûå ïîÿâèëàñü â âåðñèè 2.2-pre3 è çàòåì<br />

áûëà âêëþ÷åíà â ðåëèç 2.2.1 íà ïðàâàõ ýêñïåðèìåíòàëüíîé ôè÷è. Íà<br />

îôèöèàëüíîì ñàéòå (http://bochs.sourceforge.net/) ìîæíî íàéòè íåñêîëüêî<br />

ãîòîâûõ áèíàðíûõ ñáîðîê ïîä ðàçíûå ïëàòôîðìû, íî… òîëüêî äëÿ àðõèòåêòóðû<br />

x86. Ýìóëÿöèÿ x86-64 òðåáóåò îáÿçàòåëüíîé ïåðåêîìïèëÿöèè ïîä<br />

*nix-ñèñòåìàìè. Ñêà÷èâàåì èñõîäíûå òåêñòû (http://prdownloads.sourceforge.net/bochs/bochs-2.2.1.tar.gzdownload),<br />

ðàñïàêîâûâàåì àðõèâ, çàïóñêàåì<br />

êîíôèãóðàòîð ñ êëþ÷îì --enable-x86-64 è çàòåì äàåì make.<br />

[ñáîðêà BOCHS'à ñ ïîääåðæêîé ýìóëÿöèè x86-64]<br />

$./configure --enable-x86-64<br />

$make<br />

Îáðàçóåòñÿ èñïîëíÿåìûé ôàéë bochs, òðåáóþùèé äëÿ ñâîåé ðàáîòû bios<br />

è bxrc-ñöåíàðèé, êîòîðûå ìîæíî ïîçàèìñòâîâàòü èç ãîòîâîé áèíàðíîé<br />

ñáîðêè. Äëÿ êîìïèëÿöèè ïîä Windows-ïëàòôîðìó ñëåäóåò çàïóñòèòü<br />

ñêðèïò conf.win32-vcpp, à çàòåì âûïîëíèòü make win32_snap. Äëÿ ýòîãî,<br />

åñòåñòâåííî, íåîáõîäèìî èìåòü Linux, ïîñêîëüêó Windows shell-ñêðèïòîâ<br />

â óïîð íå ïîíèìàåò (ïðàâäà, ìîæíî âîñïîëüçîâàòüñÿ Cygwin'îì, íî ñáîðêà<br />

ïîä íèì — îòäåëüíûé ãåìîððîé).<br />

[ñáîðêà BOCHS'à äëÿ êîìïèëÿöèè Microsoft Visual C++]<br />

sh .conf.win32-vcpp<br />

make win32_snap<br />

Çàëåçàé íà äèñê ê æóðíàëó,<br />

òàì òû îáíàðóæèøü âñå<br />

èñõîäíèêè ê ñòàòüå.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!