А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582), страница 4
Текст из файла (страница 4)
Òàê, êîìàíäà èç âûøåïðèâåä¼ííîãî ïðèìåðà, êîä êîòîðîé, êàê ìû ñ íåêîòîðûì òðóäîì âûÿñíèëè,ðàâåí 01 D8, â óñëîâíûõ îáîçíà÷åíèÿõ6 âûãëÿäèò òàê:addeax, ebxÇäåñü íàì óæå íå íàäî çàó÷èâàòü ÷èñëîâîé êîä êîìàíäû è âû÷èñëÿòü âóìå îáîçíà÷åíèÿ îïåðàíäîâ, äîñòàòî÷íî çàïîìíèòü, ÷òî ñëîâîì add îáîçíà÷àåòñÿ ñëîæåíèå, ïðè÷¼ì â òàêèõ ñëó÷àÿõ âñåãäà ïåðâûì ïîñëå îáîçíà÷åíèÿ êîìàíäû ñòîèò ïåðâîå ñëàãàåìîå (íå îáÿçàòåëüíî ðåãèñòð, ýòîìîæåò áûòü è îáëàñòü ïàìÿòè), âòîðûì âòîðîå ñëàãàåìîå (ýòî ìîæåòáûòü è ðåãèñòð, è îáëàñòü ïàìÿòè, è ïðîñòî ÷èñëî), à ðåçóëüòàò âñåãäà çàíîñèòñÿ íà ìåñòî ïåðâîãî ñëàãàåìîãî.
ßçûê òàêèõ óñëîâíûõ îáîçíà÷åíèé(ìíåìîíèê) íàçûâàåòñÿ ÿçûêîì àññåìáëåðà .Ïðîãðàììèðîâàíèå íà ÿçûêå àññåìáëåðà êîðåííûì îáðàçîì îòëè÷àåòñÿ îò ïðîãðàììèðîâàíèÿ íà ÿçûêàõ âûñîêîãî óðîâíÿ. Íà ÿçûêå âûñîêîãî5 Âîîáùå ãîâîðÿ, êîìïèëÿòîð ýòî ïðîãðàììà, ïåðåâîäÿùàÿ ïðîãðàììû ñ îäíîãîÿçûêà íà äðóãîé; ïåðåâîä íà ÿçûê ìàøèííîãî êîäà ýòî ëèøü ÷àñòíûé ñëó÷àé, õîòÿè î÷åíü âàæíûé.6 Çäåñü è äàëåå èñïîëüçóþòñÿ óñëîâíûå îáîçíà÷åíèÿ, ñîîòâåòñòâóþùèå àññåìáëåðóNASM, åñëè íå ñêàçàíî èíîå.12óðîâíÿ (íà òîì æå Ïàñêàëå) ìû çàäà¼ì ëèøü îáùèå óêàçàíèÿ, à êîìïèëÿòîð âîëåí ñàì âûáèðàòü, êàêèì èìåííî ñïîñîáîì èõ èñïîëíèòü íàïðèìåð, êàêèìè ðåãèñòðàìè è ÿ÷åéêàìè ïàìÿòè âîñïîëüçîâàòüñÿ äëÿõðàíåíèÿ ïðîìåæóòî÷íûõ ðåçóëüòàòîâ, êàêîé ïðèìåíèòü àëãîðèòì äëÿâûïîëíåíèÿ êàêîé-íèáóäü íåòðèâèàëüíîé èíñòðóêöèè, è ò.
ä. Ñ öåëüþ îïòèìèçàöèè áûñòðîäåéñòâèÿ êîìïèëÿòîð ìîæåò ïåðåñòàâèòü èíñòðóêöèèìåñòàìè, çàìåíèòü îäíè íà äðóãèå ëèøü áû ðåçóëüòàò îñòàëñÿ íåèçìåííûì.  îòëè÷èå îò ýòîãî, íà ÿçûêå àññìåáëåðà ìû ñîâåðøåííîîäíîçíà÷íî è íåäâóñìûñëåííî óêàçûâàåì, èç êàêèõ ìàøèííûõêîìàíä áóäåò ñîñòîÿòü íàøà ïðîãðàììà, è íèêàêîé ñâîáîäû àññåìáëåð (â îòëè÷èå îò êîìïèëÿòîðà ÿçûêà âûñîêîãî óðîâíÿ) íåèìååò. îòëè÷èå îò ìàøèííûõ êîäîâ, ìíåìîíèêè äîñòóïíû äëÿ ÷åëîâåêà,òî åñòü ïðîãðàììèñò ìîæåò ðàáîòàòü ñ ìíåìîíèêàìè áåç îñîáîãî òðóäà,íî ýòî íå îçíà÷àåò, ÷òî ïðîãðàììèðîâàòü íà ÿçûêå àññåìáëåðà ïðîñòî.Äåéñòâèå, íà îïèñàíèå êîòîðîãî ìû áû ïîòðàòèëè îäèí îïåðàòîð ÿçûêà âûñîêîãî óðîâíÿ, ìîæåò ïîòðåáîâàòü äåñÿòêà, åñëè íå ñîòíè ñòðîê íàÿçûêå àññåìáëåðà, à â íåêîòîðûõ ñëó÷àÿõ è áîëüøå.
Äåëî òóò â òîì, ÷òîêîìïèëÿòîð ÿçûêà âûñîêîãî óðîâíÿ ñîäåðæèò áîëüøîé íàáîð ãîòîâûõ¾ðåöåïòîâ¿, êàê ðåøàòü ÷àñòî âîçíèêàþùèå íåáîëüøèå çàäà÷è, è ïðåäîñòàâëÿåò âñå ýòè ¾ðåöåïòû¿ ïðîãðàììèñòó â âèäå óäîáíûõ âûñîêîóðîâíåâûõ êîíñòðóêöèé; àññåìáëåð æå íèêàêèõ òàêèõ ðåöåïòîâ íå ñîäåðæèò,òàê ÷òî â íàøåì ðàñïîðÿæåíèè îêàçûâàþòñÿ òîëüêî âîçìîæíîñòè ïðîöåññîðà.Èíòåðåñíî, ÷òî äëÿ îäíîãî è òîãî æå ïðîöåññîðà ìîæåò ñóùåñòâîâàòüíåñêîëüêî ðàçíûõ àññåìáëåðîâ.
Íà ïåðâûé âçãëÿä ýòî êàæåòñÿ ñòðàííûì,âåäü íå ìîæåò æå îäèí è òîò æå ïðîöåññîð ðàáîòàòü ñ ðàçíûìè ñèñòåìàìè ìàøèííûõ êîäîâ (òàê íàçûâàåìûìè ñèñòåìàìè êîìàíä ).  äåéñòâèòåëüíîñòè íè÷åãî ñòðàííîãî çäåñü íåò, äîñòàòî÷íî âñïîìíèòü, ÷òî æåòàêîå íà ñàìîì äåëå àññåìáëåð. Ñèñòåìà êîìàíä ïðîöåññîðà, ðàçóìååòñÿ,íå ìîæåò èçìåíèòüñÿ (åñëè òîëüêî íå âçÿòü äðóãîé ïðîöåññîð).
Îäíàêîäëÿ îäíèõ è òåõ æå êîìàíä ìîæíî ïðèäóìàòü ðàçíûå îáîçíà÷åíèÿ; òàê,óæå çíàêîìàÿ êîìàíäà add eax,ebx â îáîçíà÷åíèÿõ, ïðèíÿòûõ â êîìïàíèè AT&T, áóäåò âûãëÿäåòü êàê addl %ebx,%eax è ìíåìîíèêà äðóãàÿ,è ðåãèñòðû íå òàê îáîçíà÷åíû, è îïåðàíäû íå â òîì ïîðÿäêå, õîòÿ ïîëó÷àåìûé ìàøèííûé êîä, ðàçóìååòñÿ, ñòðîãî òîò æå ñàìûé 01 D8. Êðîìåòîãî, ïðè ïðîãðàììèðîâàíèè íà ÿçûêå àññåìáëåðà ìû îáû÷íî ïèøåì íåòîëüêî ìíåìîíèêè ìàøèííûõ êîìàíä, íî è äèðåêòèâû , ïðåäñòàâëÿþùèå ñîáîé ïðÿìûå ïðèêàçû àññåìáëåðó. Ñëåäóÿ òàêèì óêàçàíèÿì, àññåìáëåð ìîæåò çàðåçåðâèðîâàòü ïàìÿòü, îáúÿâèòü òó èëè èíóþ ìåòêó âèäèìîé èç äðóãèõ ìîäóëåé ïðîãðàììû, ïåðåéòè ê ãåíåðàöèè äðóãîé ñåêöèèïðîãðàììû, âû÷èñëèòü (ïðÿìî âî âðåìÿ àññåìáëèðîâàíèÿ) êàêîå-íèáóäüâûðàæåíèå è äàæå ñàì (ñëåäóÿ, ðàçóìååòñÿ, íàøèì óêàçàíèÿì) ¾íàïè13ñàòü¿ ôðàãìåíò ïðîãðàììû íà ÿçûêå àññåìáëåðà, êîòîðûé ñàì æå ïîòîìè îáðàáîòàåò.
Íàáîð òàêèõ âîò äèðåêòèâ, ïîääåðæèâàåìûõ àññåìáëåðîì,òîæå ìîæåò áûòü ðàçíûì, êàê ïî âîçìîæíîñòÿì, òàê è ïî ñèíòàêñèñó.Ïîñêîëüêó àññåìáëåð ýòî íå áîëåå ÷åì ïðîãðàììà, íàïèñàííàÿâïîëíå îáûêíîâåííûìè ïðîãðàììèñòàìè, íèêòî íå ìåøàåò äðóãèì ïðîãðàììèñòàì íàïèñàòü ñâîþ ïðîãðàììó-àññåìáëåð, ÷òî ÷àñòî è ïðîèñõîäèò. Àññåìáëåð NASM, óïîìèíàåìûé â íàçâàíèè äàííîãî ïîñîáèÿ ýòîîäèí èç àññåìáëåðîâ, ñóùåñòâóþùèõ äëÿ ïðîöåññîðîâ ñåìåéñòâà 80x86.Ñóùåñòâóþò è äðóãèå àññåìáëåðû; âîçìîæíî äàæå, ÷òî êàêîé-íèáóäü èçíèõ ïîêàæåòñÿ âàì áîëåå óäîáíûì. Íà ñàìîì äåëå, íå òàê óæ âàæíî, ÿçûêêàêîãî êîíêðåòíîãî àññåìáëåðà èçó÷àòü.
Âàæíî ïîíÿòü îáùèé ïðèíöèïðàáîòû íà óðîâíå êîìàíä ïðîöåññîðà, è ïîñëå ýòîãî âû ñìîæåòå áåç òðóäà îñâîèòü íå òîëüêî äðóãîé àññåìáëåð, íî è ëþáîé äðóãîé ïðîöåññîð ññîâñåì äðóãèìè êîìàíäàìè. 1.2. Îñîáåííîñòè ïðîãðàììèðîâàíèÿ ïîäóïðàâëåíèåì ìóëüòèçàäà÷íûõ îïåðàöèîííûõñèñòåìÏîñêîëüêó ìû ñîáèðàåìñÿ çàïóñêàòü íàïèñàííûå íàìè ïðîãðàììûïîä óïðàâëåíèåì ÎÑ Unix, íåëèøíèì áóäåò çàðàíåå îïèñàòü íåêîòîðûåîñîáåííîñòè òàêèõ ñèñòåì ñ òî÷êè çðåíèÿ âûïîëíÿåìûõ ïðîãðàìì; ýòèîñîáåííîñòè ðàñïðîñòðàíÿþòñÿ íà âñå ïðîãðàììû, âûïîëíÿþùèåñÿ êàêïîä îïåðàöèîííûìè ñèñòåìàìè ñåìåéñòâà Unix, òàê è ïîä ìíîãèìè äðóãèìè ñèñòåìàìè, è íèêàê íå çàâèñÿò îò èñïîëüçóåìîãî ÿçûêà ïðîãðàììèðîâàíèÿ, íî ïðè ðàáîòå íà ÿçûêå àññåìáëåðà ñòàíîâÿòñÿ îñîáåííî çàìåòíû.Ïðàêòè÷åñêè âñå ñîâðåìåííûå îïåðàöèîííûå ñèñòåìû ïîçâîëÿþò çàïóñêàòü íåñêîëüêî ïðîãðàìì íà îäíîâðåìåííîå èñïîëíåíèå. Òàêîé ðåæèìðàáîòû âû÷èñëèòåëüíîé ñèñòåìû, íàçûâàåìûé ìóëüòèçàäà÷íûì 7 , ïîðîæäàåò íåêîòîðûå ïðîáëåìû, òðåáóþùèå ðåøåíèÿ ñî ñòîðîíû àïïàðàòóðû (ïðåæäå âñåãî öåíòðàëüíîãî ïðîöåññîðà).Âî-ïåðâûõ, íåîáõîäèìî çàùèòèòü âûïîëíÿåìûå ïðîãðàììû äðóã îòäðóãà è ñàìó îïåðàöèîííóþ ñèñòåìó îò ïîëüçîâàòåëüñêèõ ïðîãðàìì.
Åñëè (ïóñòü äàæå íå ïî çëîìó óìûñëó, à ïî îøèáêå) îäíà èç âûïîëíÿåìûõçàäà÷ èçìåíèò ÷òî-òî â ïàìÿòè, ïðèíàäëåæàùåé äðóãîé çàäà÷å, ñêîðååâñåãî ýòî ïðèâåä¼ò ê àâàðèè ýòîé âòîðîé çàäà÷è, ïðè÷¼ì íàéòè ïðè÷èíó òàêîé àâàðèè îêàæåòñÿ ïðèíöèïèàëüíî íåâîçìîæíî. Åñëè ïîëüçîâàòåëüñêàÿ çàäà÷à (îïÿòü-òàêè ïî îøèáêå) âíåñ¼ò èçìåíåíèÿ â ïàìÿòü îïå7 Òåðìèí ¾çàäà÷à¿, ñòðîãî ãîâîðÿ, äîâîëüíî ñëîæåí, íî óïðîù¼ííî çàäà÷ó ìîæíîïîíèìàòü êàê ¾ïðîãðàììó, êîòîðàÿ çàïóùåíà íà âûïîëíåíèå ïîä óïðàâëåíèåì îïåðàöèîííîé ñèñòåìû¿, èíà÷å ãîâîðÿ, ïðè çàïóñêå ïðîãðàììû â ñèñòåìå âîçíèêàåò çàäà÷à.14ðàöèîííîé ñèñòåìû, ýòî ïðèâåä¼ò óæå ê àâàðèè âñåé ñèñòåìû, ïðè÷¼ì,îïÿòü-òàêè, áåç ìàëåéøåé âîçìîæíîñòè ðàçîáðàòüñÿ â ïðè÷èíàõ òàêîâîé.Ïîýòîìó öåíòðàëüíûé ïðîöåññîð äîëæåí ïîääåðæèâàòü ìåõàíèçì çàùèòû ïàìÿòè : êàæäîé âûïîëíÿþùåéñÿ çàäà÷å âûäåëÿåòñÿ îïðåäåë¼ííàÿîáëàñòü ïàìÿòè, è ê ÿ÷åéêàì çà ïðåäåëàìè òàêîé îáëàñòè çàäà÷à îáðàùàòüñÿ íå ìîæåò.Âî-âòîðûõ, â ìóëüòèçàäà÷íîì ðåæèìå ïîëüçîâàòåëüñêèå çàäà÷è, êàêïðàâèëî, íå äîïóñêàþòñÿ ê ïðÿìîé ðàáîòå ñ âíåøíèìè óñòðîéñòâàìè8 .Åñëè áû ýòî ïðàâèëî íå âûïîëíÿëîñü, çàäà÷è ïîñòîÿííî íà÷èíàëè áûêîíôëèêòîâàòü çà äîñòóï ê óñòðîéñòâàì, è òàêèå êîíôëèêòû, ðàçóìååòñÿ, ïðèâîäèëè áû ê àâàðèÿì.
×òîáû îãðàíè÷èòü âîçìîæíîñòè ïîëüçîâàòåëüñêîé çàäà÷è, ñîçäàòåëè öåíòðàëüíîãî ïðîöåññîðà îáúÿâèëè ÷àñòüèìåþùèõñÿ ìàøèííûõ èíñòðóêöèé ïðèâèëåãèðîâàííûìè . Ïðîöåññîðìîæåò ðàáîòàòü ëèáî â ïðèâèëåãèðîâàííîì ðåæèìå , òàêæå íàçûâàåìîì ðåæèìîì ñóïåðïîëüçîâàòåëÿ , ëèáî â îãðàíè÷åííîì ðåæèìå , êîòîðûé òàêæå íàçûâàþò ðåæèìîì çàäà÷è èëè ïîëüçîâà9òåëüñêèì ðåæèìîì .  îãðàíè÷åííîì ðåæèìå ïðèâèëåãèðîâàííûåêîìàíäû íåäîñòóïíû.  ïðèâèëåãèðîâàííîì ðåæèìå ïðîöåññîð ìîæåòâûïîëíÿòü âñå èìåþùèåñÿ èíñòðóêöèè, êàê îáû÷íûå, òàê è ïðèâèëåãèðîâàííûå. Îïåðàöèîííàÿ ñèñòåìà âûïîëíÿåòñÿ, åñòåñòâåííî, â ïðèâèëåãèðîâàííîì ðåæèìå, à ïðè ïåðåäà÷å óïðàâëåíèÿ ïîëüçîâàòåëüñêîé çàäà÷åïåðåêëþ÷àåò ðåæèì â îãðàíè÷åííûé. Âåðíóòüñÿ â ïðèâèëåãèðîâàííûéðåæèì ïðîöåññîð ìîæåò òîëüêî ïðè óñëîâèè îäíîâðåìåííîé ïåðåäà÷èóïðàâëåíèÿ íàçàä îïåðàöèîííîé ñèñòåìå, òàê ÷òî êîä ïîëüçîâàòåëüñêîéïðîãðàììû âûïîëíÿòüñÿ â ïðèâèëåãèðîâàííîì ðåæèìå íå ìîæåò.
Ê êàòåãîðèè ïðèâèëåãèðîâàííûõ îòíîñÿòñÿ èíñòðóêöèè, îñóùåñòâëÿþùèå âçàèìîäåéñòâèå ñ âíåøíèìè óñòðîéñòâàìè; òàêæå â ýòó êàòåãîðèþ ïîïàäàþòèíñòðóêöèè, èñïîëüçóåìûå äëÿ íàñòðîéêè ìåõàíèçìîâ çàùèòû ïàìÿòè èíåêîòîðûå äðóãèå êîìàíäû, âëèÿþùèå íà ðàáîòó âñåé ñèñòåìû â öåëîì.Âñå òàêèå ¾ãëîáàëüíûå¿ äåéñòâèÿ ÿâëÿþòñÿ ïðåðîãàòèâîé îïåðàöèîííîéñèñòåìû.
Ïðè ðàáîòå ïîä óïðàâëåíèåì ìóëüòèçàäà÷íîé îïåðà-öèîííîé ñèñòåìû ïîëüçîâàòåëüñêàÿ çàäà÷à ìîæåò ëèøü ïðåîáðàçîâûâàòü èíôîðìàöèþ â îòâåä¼ííîé åé îáëàñòè îïåðàòèâíîéïàìÿòè. Âñ¼ âçàèìîäåéñòâèå ñ âíåøíèì ìèðîì çàäà÷à ïðîèçâîäèò ÷åðåç îáðàùåíèÿ ê îïåðàöèîííîé ñèñòåìå. Äàæå ïðîñòî âû-âåñòè íà ýêðàí ñòðîêó çàäà÷à ñàìîñòîÿòåëüíî íå ìîæåò, åé íåîáõîäèìîïîïðîñèòü îá ýòîì îïåðàöèîííóþ ñèñòåìó. Òàêîå îáðàùåíèå ïîëüçîâà8 Èç ýòîãî ïðàâèëà åñòü èñêëþ÷åíèÿ, ñâÿçàííûå, íàïðèìåð, ñ îòîáðàæåíèåì ãðàôè÷åñêîé èíôîðìàöèè íà äèñïëåå, íî â ýòîì ñëó÷àå óñòðîéñòâî äîëæíî áûòü çàêðåïëåíîçà îäíîé ïîëüçîâàòåëüñêîé çàäà÷åé è ñòðîãî íåäîñòóïíî äëÿ äðóãèõ çàäà÷.9 Íà ñàìîì äåëå ïðîöåññîð i386 è åãî ïîòîìêè èìåþò íå äâà, à ÷åòûðå ðåæèìà,íàçûâàåìûå òàêæå êîëüöàìè çàùèòû, íî ðåàëüíî îïåðàöèîííûå ñèñòåìû èñïîëüçóþòòîëüêî íóëåâîå êîëüöî (âûñøèé âîçìîæíûé óðîâåíü ïðèâèëåãèé) è òðåòüå êîëüöî(íèçøèé óðîâåíü ïðèâèëåãèé).15òåëüñêîé çàäà÷è ê îïåðàöèîííîé ñèñòåìå çà òåìè èëè èíûìè óñëóãàìèíàçûâàåòñÿ ñèñòåìíûì âûçîâîì .
Èíòåðåñíî, ÷òî çàâåðøåíèå çàäà÷èòîæå ìîæåò âûïîëíèòü òîëüêî îïåðàöèîííàÿ ñèñòåìà. Òàêèì îáðàçîì,êîððåêòíàÿ ïîëüçîâàòåëüñêàÿ çàäà÷à îáîéòèñü áåç ñèñòåìíûõ âûçîâîâ íåìîæåò íèêàê, âåäü äàæå ïðîñòî çàâåðøèòüñÿ îíà ìîæåò òîëüêî ñ ïîìîùüþ ñîîòâåòñòâóþùåãî ñèñòåìíîãî âûçîâà.Åù¼ îäèí âàæíûé ìîìåíò, êîòîðûé íåîáõîäèìî óïîìÿíóòü ïåðåä íà÷àëîì èçó÷åíèÿ êîíêðåòíîãî ïðîöåññîðà ýòî íàëè÷èå â íàøåé îïåðàöèîííîé ñðåäå ìåõàíèçìà âèðòóàëüíîé ïàìÿòè . Ïîïðîáóåì ïîíÿòü,÷òî ýòî òàêîå. Êàê óæå ãîâîðèëîñü, îïåðàòèâíàÿ ïàìÿòü äåëèòñÿ íà îäèíàêîâûå ïî ñâîåé ¼ìêîñòè ÿ÷åéêè (â íàøåì ñëó÷àå êàæäàÿ ÿ÷åéêà ñîäåðæèò 1 áàéò äàííûõ), è êàæäàÿ òàêàÿ ÿ÷åéêà èìååò ñâîé ïîðÿäêîâûéíîìåð. Èìåííî ýòîò íîìåð èñïîëüçóåò öåíòðàëüíûé ïðîöåññîð äëÿ ðàáîòû ñ ÿ÷åéêàìè ïàìÿòè ÷åðåç îáùóþ øèíó, ÷òîáû îòëè÷àòü èõ îäíóîò äðóãîé.