Crc press баспасы Taylor & Francis баспа тобы



Pdf көрінісі
бет5/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   2   3   4   5   6   7   8   9   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


1.9.2 Қолдану негізінде жіктеу
Тілдер сондай-ақ қолдану үлгісі негізінде де жіктелуі мүмкін. Кеңінен 
қолданудың  төрт  үлгісі  бар:    (1)  статистикалық  қолдану,  (2)  тізім  не-
гізінде қолдану, (3) хипті (heap - үйме) толтыру негізінде қолдану және 
(4) қолданудың  атқару  тиімділігін  арттыру  үшін  жадыны  статистика-
лық,  ағынды  және  үймелі  таралуын  интегралдайтын  интегралданған
үлгісі.    5-тарауда  айтылғандай  статистикалық  қолдану  компиляция
кезінде берілгендер мен айнымалылардың әрбір жарияланған құрылы-
мы үшін жадыны таратады және атқару кезінде жадының өсуіне ешқан-
дай мүміндік болмайды.  Тізім негізінде қолдану «басқарушы стек» деп
атайтын тізімді қолданады. Бұл шақырылған рәсімді іске қосу үшін қа-
жетті әртүрлі көрсеткіштер сияқты бағдарламаны іске асыру кезіндегі
жергілікті айнымалылар мен басқа да талаптарды бөлу үшін керек. Стек
қолданудың артықшылығы стек ішкі бағдарлама деп аталатын тізбекке
қажетті жады негізінде атқару кезінде кеңеюі және азаюы мүмкін. Бұл
кеңею  жұмыс  кезеңінде  жадының  динамикалық  өсуіне,  сондай-ақ  ре-

46
курсивті процедураларды қолдануды қолдауға және жадыны қайтадан 
пайдалануға мүмкіндік береді.   Хипті толтыруға негізделген қолдану 
үлгісі  барлық процедураларға қол жетімді жадының жалпы орталық об-
лысын пайдаланады. Хипті толтыруға негізделген қолдану үлгісі жады-
ның барлық процедураларға қолжетімді орталық жалпы облысын пай-
даланады. Жадыға керек кезінде хиптан алынатын мәліметтер құрылы-
мы керек, және оны атқарып жатқан кезде динамикалық түрде шығару 
керек немесе бағдарламашының нақты әрекеттерінің көмегімен қолмен 
немесе мәліметтер құрылымы енді қолданбайын кезде автоматты түрде 
іске қосылады. Хипті толтыруға негізделген қолдану мәліметтердің ди-
намикалық құрылымын нысандарды нысанды-бағдарлы бағдарламала-
уға таратуға, сондай-ақ рекурсивті мәліметтер құрылымын байланысқан 
тізімдер мен ағашты таратуға мүмкіндік береді.   
Статистикалық қолдану  байланысқан тізімдер және ағаштар және ди-
намикалық нысандар сияқты мәліметтердің рекурсивті құрылымдарын, 
рекурсивті процедураларды сақтамайды. Соған қарамастан, статистика-
лық  қолдану  мәліметтер  элементіне  рұхсат  алу  үшін  бір  жадыға  рұх-
сатты  қолдана  отырып  жадының  абсолют  адресін  пайдаланады.  Осы-
дан, статистикалық қолдану жадыға бірден көп рұхсатқа бара-бар көр-
секіштерге негізделген стек негізіндегі қолдану мен хипті толтыруға не-
гізделген қолдануға қарағанда мәліметтер элементтеріне тезірек рұхсат 
ала алады. 
Стек негізіндегі қолданудағы стек өлшемі операциялық жүйелер рұхсат 
еткен жадымен ғана шектелген. Процедураларға қажетті ұяшықтар сәй-
кес процедуралар шақырылған кезде жұмыс атқарылып жатқан уақытта 
бөлінуі  мүмкін.  Жады  ұяшықтары  процедураның  шақырғыш  шабло-
ны негізінде стекың жоғарғы бөлігінде орналасады және шақырылған 
процедура аяқталған сәтте қалпына келеді. Бұл жадыны қайта пайда-
лануға  мүмкіндік  береді.  Өйткені,  жадының  дәл  сондай  көлемі  басқа 
процедураны  шақырған  кезде  пайдаланылуы  мүмкін.  Қорытындылай 
келе, стек негізінде қолданудың екі негізгі артықшылығы бар деп айтуға 
болады: рекурсивті процедураны атқару және жадыны қайтадан пайда-
лану. Соған қарамастан, стек негізінде қолдану кезінде дербестендіру 
механизмі 5 тарауда көрсетілгендей көрсеткіштер мен жылжытуды қол-
данады.  Сәйкесінше,  статистикалық  қолданумен  салыстырғанда  стек 
негізіндегі қолдану айнымалылар мен мәліметтер құрылымына рұхсат 
алу үшін қосымша шығындар қажет етеді. 
Бұл қолданудың негізгі кемшіліктерінің бірі мәліметтердің байланысқан 
тізімдер мен ағаштар сияқты рекурсивті құрылымдары, сондай-ақ дина-
микалық жасалған нысандар сияқты динамикалық мәліметтер әлі күнге 

47
дейін  қолданылуы  мүмкін.  Рекурсивті  мәліметтер  және  динамикалық 
нысандар құрылымында стек негізінде қолдану кезінде олардың жұмыс 
істеуіне кедергі келтіретін екі негізгі мәселе бар. Бірінші мәселе ком-
пиляция кезінде мәліметтер құрылымын жасау кезіндегі  белгісіздікте, 
ал  екіншісі  мәліметтер  құрылымының  өлшемі.  Рекурсивті  мәліметтер 
құрылымы жағдайында компиляция кезінде тапсырманы орындау бары-
сында қанша жады керек екені анық емес. Мәліметтерді шақыру және 
енгізуге  байланысты  рекурсивті  мәліметтер  құрылымында  ұяшықтар-
дың әртүрлі санында бірнеше рет шақырылуы мүмкін. Сонымен қатар 
компиляция  кезінде  атқару  барысында  қандай  нысанның  жасалаты-
ны  белгісіз.  Әрі  рекурсивті  мәліметтер  және  динамикалық  нысандар 
құрылымдары  жасалған  процедураның  уақыты  біткен  кезде,  оның  да 
мерзімі аяқталады. Сол себепті хип деп аталатын жадының жалпы об-
лысы  пайдаланылады.  Хип  –  үдерістер  керек  кезінде  қосымша  жады 
ала  алатын  және  қажеттілік  болмаған  жағдайда  жадыны  қайтара  ала-
тын жады банкі. Логикалық мәліметтердің бір құрылымы көрсеткіштер 
көмегімен  байлынсқан  жадының  әртүрлі  блоктарында  хиптің  өн  бой-
ында таралуы мүмкін. Жадының бұл блоктары әртүрлі уақытта бағдар-
ламаны орындау кезінде жіберілген сұранымға жауап ретінде бөлінеді. 
Рекурсивті мәліметер немесе динамикалық нысандар құрылымын жою 
хипте  жадыны  босатумен  бірдей.  Жады  босағаннан  кейін  қоқыс  жи-
нағыш  жадыны  тазалайды.  Енді  оны  басқа  үдерістерде  пайдалануға 
болады. Бұл хиптің мәліметтер құрылымында білген сұрыпталған ке-
скінден өзгеше екеніне назар аударыңыз. 
Хип негізінде қолдану стек негізінде қолдануға қарағанда баяулау. Өй-
ткені, (1) нысандарды атқаруға уақыт бөлген кезде қосымша шығындар 
болады, (2) үймедегі мәліметтер құрылымын айналып өту үшін көрсет-
кіштерді  артық  падалану  кезіндегі  қосымша  шығындар  және  (3)  қай-
тадан  пайдалану  үшін  жадыны  пайдалану  үшін  қосымша  шығындар 
болады.  
Қазіргі  тілдер  атқару  тиімділігінің  максималды  мүмкіндігімен  қатар 
барлық мүмкіндіктерді беру үшін жадыны бөлудің барлық үш түрін пай-
даланады. Мысалы, С++ сияқты қазіргі тілдер статистикалық таратуды 
қолданатын    статистикалық  айнымалыларды,  рекурсивті  үдерістерді 
өңдеу үшін хип негізіндегі қолдануды және жадыны қайта пайдалану-
ды, сондай-ақ мәліметтердің динамикалық нысандары мен рекурсивті 
мәліметтер құрылымы үшін динамикалық жадыны пайдаланады.  
1.9.3 Басқа жіктеу
Бағдарламалау тілдері олардың жүйелер түріне сәйкес жіктелуі мүмкін. 

48
Түрлердің негізгі екі жіктелуі бар: мономорфты түр және полиморфты 
түр.    Атаулары  айтып  тұрғандай,  мономорфты  түрдегі  тілде  мәлімет-
тер құрылымының тек тір түрі ғана өңделеді. Мысалы, егер біз байла-
нысқан тізімдегі элементтер санын есептеу үшін функция жазсақ, онда 
көптеген осыған ұқсас функциялар біз бүтін сандар тізімін есептейміз 
бе, әлде мәліметтері басқа тізімдегі құбылмалы нүктелі сандар тізімін 
есептейміз  бе,  соған  байланысты  мономорфты  тілде  жазылу  керек. 
Соған қарамастан, байланысқан тізімдердің әр түріне бейімделетін по-
лиморфты  тілде  тек  бір  ғана  жалпы  функция  жазылу  керек.  Фортан, 
Алгол, Паскаль және Си сияқты тілдер-мономорфты тілдер: олар 7-та-
рауда сипатталғандай, мәжбүрлі және қайта жүктеу формасындағы по-
лиморфизмнің тек шектеулі санын ғана жалғастырады. С++, Лисп, ML, 
Хэскелл, Java және Пролог сияқты көптеген заманауи тілдер – полимор-
фты тілдер. 
Бағдарламалау тілдерін жіктеудің тағы бір қызық әдісі тақырыптық са-
лаға қажетті тілдер функциясына байланысты ең жақсы жұмыс істейтін 
тақырыптар  классы  бойынша  анықтау  болып  табылады.  Тақырыптық 
саланың  барлық  талаптарына  жауап  беретін  тіл  осы  домен  бойынша 
лайықты тіл деп жіктелуі мүмкін. Мысалы, C++ үлкен бағдарламалық 
қамтамасыз етуді жасауға жақсы тіл болып табылады. Соған қарамастан, 
бұл шынайы уаықтта бағдарламалау режимі үшін жақсы емес. Дәл со-
лай, Фортан ғылыми бағдарламалау үшін жақсы тіл болып табылады. 
1.10  Қысқаша қорытындылар 
Бағдарламаның  негізгі  үш  құраушысы  бар:  логика,  абстракция  және 
бақылау.  Әр  тіл  әртүрлі  тақырыптық  облыс  үшін  жақсы.  Бағдарлама-
лаудың  тілдері  үшін  қойылатын  талаптар  кейде  бір-бірімен  үйлеспей 
жатады.  Бағдарламалаудың  императивті  бағдарламалау  парадигмасы, 
функционалды бағдарламалау парадигмасы, логикалық бағдарламалау 
парадигмасы,  нысанды-бағдарлы  бағдарламалау  парадигмасы,  визу-
алды  бағдарламалау  парадигмасы,  параллель  бағдарламалау  парадиг-
масы,  оқиға-бағдарлы  бағдарламалау  парадигмасы,  мульти  медиалық 
бағдарламалау парадигмасы және веб-бағдарламалау парадигмасы си-
яқты әртүрлі парадигмалар әртүрлі функциялармен сипатталуы мүмкін. 
Бағдарламалаудың  әртүрлі  парадигмаларының  дамуымен  бірге  тіл  ға-
лымдары бағдарламалаудың әртүрлі парадигмаларының жақсы жақта-
рын талқылап және анықтады. Қазіргі тілдер осы қасиеттерді біріктіріп, 
көптеген бағдарламаларға парадигмалар қосты. Мысалы, Java тілі – им-
перативті, нысанды-бағдарлы, оқиғалы, параллель және веб-бағдарла-
малау парадигмаларын біріктіреді.  

49
Жоғары деңгейлі тілдер бағдарламалық қамтамасыз етуді жақсы түсіну, 
басқару және дамыту үшін мәліметтер мен басқару абстракциясын қол-
дану керек. Тілдер сонымен қоса бір модульдің өзгеріс тиімділігі осы 
модульде шектелетіндей модулдікті қабылдау керек. Біз аударудың үш 
түрлі механизмін талқыладық: аудармашы жасайтын аударма, компиля-
тор қамтамасыз ететін компиляция және JIT компиляторлар қамтамасыз 
ететін  JIT компилятор. Толықтырылған кодтар аудару үдерісі атқарудың 
бір бөлігі болмағандықтан, неғұрлым тиімді орындалады. Аудару және 
атқару  атқару  кезінде  бір-бірімен  сәйкестеніп  қалатындықтан  аудар-
машылар бағдарламаны баяу атқарады. 
Веб-тілдер  виртуалды  машиналарды  және  JIT  компиляцияны  атқару 
үшін төменгі деңгейдегі кодты аударуға пайдаланылады. JIT компиля-
цияны атқарудың тиімділігі толықтырылған код пен түсіндірілген код-
тың арасында жатады.  
Бағдарламалау тілін қолдану үшін төменгі деңгейлі әртүрлі абстрактілі 
үлгілерді қолданады. Статистикалық қолдану жадыға тікелей рұхсатты 
қолданады. Алайда жадының өсуіне қолдау болмағандықтан статисти-
калық қолдану рекурсивті үдерістерді, жадыны қайта пайдалануды, бай-
ланысқан тізімдер мен ағаштар сияқты рекурсивті мәліметтер құрылы-
мын, сондай-ақ мәліметтердің динамикалық нысанын өңдей алмайды.  
Стек  негізінде  қолдану  рекурсивті  үдерістер  мен  жадыны  қайтадан 
пайдалануға мүмкіндік береді. Алайда, стек негізінде қолдану мәлімет-
тердің  рекурсивті  құрылымдарын  және  мәліметтердің  динамикалық 
нысандарын  өңдей  алмайды.    Мәліметтердің  рекурсивті  құрылымда-
рын және бағдарламаның қажетілігіне байланысты бөліктерге бөлінуі 
мүмкін мәліметтердің динамикалық нысандарын құруға кеткен уақыт-
ты өңдеу үшін бізге барлық қолдануылған ішкі бағдарламалармен қатар 
хипті-жадының жалпы облысын қолдану керек. 
Тілдерді (1) жіктеу негізіндегі бағдарламалау парадигмасы, (2) жіктеу-
лер негізіндегі қолдану және (3) түр негізіндегі жіктеулер сияқты  көп-
теген әртүрлі өлшемдерді пайдаланып жіктеуге болады. Алайда, қазір-
гі тілдерді жіктеу өте қиын. Қазіргі бағдарламалау тілдері белгілердің 
жиынтығынан пайдалы көреді және бір категорияға жіктеле алмайды. 
1.11 Бағалау
1.11.1 Тұжырымдамасы мен анықтамалар
Абстракция; алгоритм; альфа-тестілеу; жинау коды; бета- тестілеу; би-
нарлы  код;  кодты  оңтайландыру;  құрастырушы;  параллелизм;  парал-
лель  бағдарламалау;    шартты  ауысу;  бақылау;  абстракцияны  бақылау; 
ағынды басқару; басқарудың блок-сызбасы; мәліметтер абстракциясы; 

50
мәліметтер негізінде итрерация; ресми түрде бағдарламалау парадигма-
сы; белгілі итерация; жойғыш жаңарту; оқиға-бағдарлы бағдарламалау 
парадигмасы, функционалды баламалық; функционалды бағдарламалау 
парадигмасы;  шартсыз  ауысу  операторы    (GOTO  операторы);  хип  не-
гізіндегі қолдану; императивті тіл; анықталмаған итерация; мәліметтерді 
жасыру; аралық қод; ғаламтор-бағдарламалау парадигмасы; аудармашы; 
JIT  компиляция;  лексикалық  сараптау;  линкер;  жүктегіш;  логикалық 
бағдарламалау парадигмасы; модульдік; мономорфті түр; мультимеди-
алық  бағдарламалау  парадигмасы;  нысанды-бағдарлы  бағдарламалау 
парадигмасы;  ортогоналдық;  синтаксистік  сараптау;  полиморфты  түр; 
ықшамдылық; тақырыптық облыс; бағдарламаны түсіну; оқу; бағдарла-
малық қамтамасыз етуді жасау кезеңі; бағдарламалық қамтамасыз ету-
ді жасау; бағдарламалық қамтамасыз ету эволюциясы;  бағдарламалық 
қамтамасыз  етуді  қызмет  ету;  бағдарламалық  қамтамасыз  етуді  қайта 
пайдалану; стек негізінде қолдану; статистикалық қолдану; таңбасыдар 
кестесі; шартсыз ауысу; визуалды бағдарламалау жазба мүмкіндігі. 
1.11.2 Тапсырма 
1. Төменде көрсетілгендей "FOR EACH" кезеңін құру үшін  "FOR" және
"WHILE" кезеңдерін пайдаланып бағдарлама жазыңдар. Мұндағы  "а"
мәліметтер  құрылымының  жиынтығы  және  "size(а)"  функциясы  эле-
менттер санын "а"-ға қайтарады, ал келесі (а) "а" мәліметтер құрылы-
мының келесі элементін қайтарады.
foreach in a {
y = f(x); print (x, y);
}
2. Келесі код үшін басқару блок-сызбасын жазыңдар.
i = 0; j = 10;
for (k = 0; k = < 9; k++) a[k] = 0;
while (i < 5) { j = j – 1;
for (k = 0; k <   = j; k++) {
a[k] = a[k] + 7;
if (a[k] mod 2 == 0} print (‘жұп сан’);} i = i + 1
}
1.11.3 Толық жауап
3. Бағдарламадағы негізгі үш құраушыны түсіндіріңдер: логика, бақы-
лау және абстракция.
4. Мәліметтерді  бақылаудың  және  абстракцияның  бағдарламалау  тіл-

51
деріндегі артықшылығын түсіндіріңдер. 
5. Бағдаламалаудың жақсы тілдерінің әртүрлі белгілерін салыстырыңдар
және сәйкестендіріңдер.
6. Бағдарламалаудың жақсы тілі үшін әртүрлі тақырыптық облыстар мен
қарама-қарсы белгілерінен мысалдар келтіре отырып бағдарламалаудың
әмбебап жақсы тілінің не үшін болмайтынын түсіндіріңдер.
7. "GOTO" бағдарламалау түсінігімен қалай байланысты? Суретті пай-
далана отырып түсіндіріңдер.
8. Бағдарламалық қамтамасыз етуінің даму кезеңін және оның бағдарла-
малау тілдерінің дамуына тиімділігін түсіндіріңдер.
9. Бағдарламалаудың  әртүрлі  парадигмаларының  сипаттарын  түсін-
діріңдер.
10. Бағдарламалау  тілін  қолдану  кезінде  жадыны  таратудың  қан-
дай  әртүрлі  категориялары  бар?  Әр  категорияның  артықшылығы  мен
кемшілігін түсіндіріңдер.
11. JIT компиляция дегенде нені түсінесіңдер? Оның дәстүрлі интерпре-
тация мен компиляциядан қандай айырмашылығы бар? Суретті пайда-
лана отырып, түсіндіріңдер.
12. Веб-тілдер не үшін JIT-компиляцияны пайдаланады? Түсіндіріңдер.
13. Бағдарламалау тілдерін категориялаудың қандай сызбалары бар? Әр
жіктелуді қысқаша сипаттаңдар.
14. Атқарылатын  командалардың  блок-сызбасы  деген  не?  Осындай
блок-сызбалардың негізгі құраушыларын түсіндіріңдер.

52
2. Алғысөз және Негізгі түсініктер
Негізгі тұжырымдамалар
Бағдарламалау бойынша ерте білімдер; мәліметтер құрылымдар кур-
сы; дискретті құрылымдар курсы 
Бұл тарауда компьютерлік құрылымның, математикалық түсініктердің 
тұжырымдамалары,  мәліметтер  құрылымы  тұжырымдамалары,  сон-
дай-ақ абстракция түсінігі және бағдарламалау тілдерін қолдануға қа-
жетті абстрактылы есептеу тұжырымдары сипатталады. Бұл түсініктер 
белгілі бір ретпен оқытылуы міндетті емес. Мұны әртүрлі тараулардағы 
анықтамалық материалдар ретінде қажетті кезде үйренуге болады. 
2.1. Фон нейман машинасы
Қазіргі  компьютерлер  фон  Нейман  машинасы  деп  аталатын  төменгі 
деңгейлі  абстрактылы  машинаға  негізделген.  Бұл  Джон  фон  Нейман 
бағдарламаны сақтайтын компьютерлік үлгі ұсынған сәттен басталды. 
Фон Нейман машинасын түсіну біз үшін өте маңызды. Өйткені, төменгі 
деңгейлі машина нұсқаулықтары фон Нейман машинасында атқару үшін 
жасалған.  Бағдарламалық  аудармашы  жоғары  деңгейлі  құрылымдар-
ды төменгі деңгейлі ұқсас нұсқаулықтарға аударады.   Шартты опера-
торлар,  "WHILE  DO"  және"FOR"  кезеңдері  сияқты  жоғары  деңгейлі 
құрылымдар  фон  Нейманның  машинасында  төменгі  деңгейлі  коман-
далар  ретімен  аударылады.  Фон  Нейманның  машинасын  және  төмен-
гі  деңгейлі  командалар  жинағын  қолдану  3-тарауда    жоғары  деңгейлі 
құрылымның мәнін төменгі деңгейдің абстрактылы нұсқаулық тұрғы-
сында талқылап және 5-тарауда абстракция басқаруын төменгі деңгей-
лі абстарктылы нұсқаулық ретіне аударады талқылаған кезде түсінікті 
болады
Фон Нейман машинасының негізгі екі құраушысы бар: (1) бағдарлама 
мен  мәліметтерді  сақтайтын  жады  және  (2)  нұсқаулықтарға  негіздел-

53
ген  мәліметтерді  өңдейтін  және  нұсқаулықтарды  шығаратын  орталық 
процессор. Нұсқаулықтар шиналарды – жады мен орталық процессор 
арасындағы жоғары жылдамдықты байланысты қосу арқылы орталық 
процессордың бірінен шығады.  Процессор сол шинаны пайдаланып ко-
манданы түсіндіреді және жадыдан мәліметтерді жүктейді. 
Memory (instruction + data) (main storage) - Жад (нұсқаулық + деректер) 
(негізгі сақтау); Load – Жүктеу; Controller + ALU + registers (computation 
and temporary fast storage) - Контроллер + ALU + регистрлер (есептеу 
және уақытша жылдам сақтау); Store – Сақтау
2.1-сурет.  Фон Нейман машинасы
Мәліметтер  орталық  процессор  шегіндегі  арифметика-логикалық 
құрылғыда (АЛҚ) өңделіп, нәтижесінде алынған мәліметтер 2.1-сурет-
те  көрсетілгендей  жадыда  қайтадан  сақталады.Әдетте  мәліметтердің 
пайдаланылған элементтері немесе олардың сілтемелері тез қолжетімді 
болу үшін құрылымдық тіркелмелерінде сақталады. Фон Нейман маши-
насында келесі орындалатын нұсқаулықтың жады адресі бар бағдарла-
малық есептегішке ие Командалар есептеуіші ағымдағы нұсқаулықты 
алғаннан кейін бір бірлікке артады. Соған қарамастан, оның мәні шарт-
ты және шартсыз ауысу операторлары арқылы өзгеруі мүмкін. 
Нұсқаулықтар  жадыдан  жүктеу  (жүктеу);  жадыда  сақтау  (сақтауыш); 
қосу, алу, көбейту және бөлу арифметикалық есептеулерді атқару; "AND" 
логикалық операторы, "OR" логикалық операторы, "OR"шығарғыш опе-
раторы және терістеу сияқты логикалық операторлар; екі мәнді салы-
стыру; бағдарлама есептеуішінің мәнін өзгерту және жүйелік деңгейдің 
әртүрлі  жалаулар  күйін  тексеру  арқылы  басқа  сыбайлас  емес  нұсқау-
лықтарға шартты немесе шартсыз өту сияқты жіктелуі мүмкін. Әртүрлі 
жалаулар бағдарлама күйі сөзі (PSW) деп аталатын тіркеуіште сақтала-
ды.  Нұсқаулықтың  осы  категориясына  қосымша  нұсқаулықтар  жиын-

54
тығы компьютер құрылысына байланысты операндыны түзету үшін ме-
кендеудің әртүрлі механизмдерін қолданады.  
2.1.1 Адрес механизмдері
Фон Нейман машинасында мәліметтер немесе жады ұяшығының адрес-
лары  тіркеуіштерде(RAM)  немесе  жадыда  уақытша  сақталуы  мүмкін. 
Осыған ұқсас жады облысында мәліметтер де, сонымен қатар жадыда 
басқа орынның адресі да болуы мүмкін. Егер жадыда мәліметтер болса 
оған бір реттік рұхсатты пайдаланып арнайы нұсқаулықпен кіруді ті-
келей кіру деп атайды. Алайда, егер жады ұяшығында жадының басқа 
ұяшығының  адресі  болса,  онда  мәліметтерді  орталық  процессорға 
мәліметтерді  жүктеу  үшін  жадыны  екі  рет  пайдалану  керек.  Бұл  әдіс 
жанама кіру деп аталады. Тікелей және жанама кіруден бөлек жылжы-
ту тіркеуіште сақталған адрес немесе жаңа адресті есептеуге арналған 
басқа  адрес  бойынша    қосылуы  немесе  алып  тасталынуы  мүмкін. 
Жылжыту негізіндегі бұл әдіс  мәліметтер құрылымының бірінші жады 
ұяшығының негізгі мекен-жайын сақтап және ішкі массивтің жылжы-
туын  негізгі  адреске  қосу  әдісімен  ішкі  массивтердің  адресін  есептеу 
қажет болатын мәліметтердің күрделі құрылымының ішкі массивтеріне 
кіру үшін қолданылады. 
Компьютерде  компютер  құрылысыны  байланысты  0-адрес,  1-адрес, 
2-адрес немесе 3-адрес болуы мүмкін. 2.1-кестеде келтірілгендей жады
немесе тіркеуіштер ұяшықтарын дербестендірген кезде адреслар саны
төменгі деңгейлі машинада жинау деңгейінде нұсқаулықтар аргумент-
терінің жиынтығының максималды санымен  беріледі.
2.1- кесте. Адрес механизмдерінің әртүрлі типтері
Нұсқаулық типі
Операциялар типі
Үш адреслы машиналық командалар:
<instruction-name> <src1>,  <src2>, 
<dst>
Үш  адреслы  машинадағы  нұсқаулық. 
Нұсқаулық  кез  келген  арифметикалық 
немесе  логикалық  диадалық  операция 
болуы мүмкін. 
Екі адреслы маиналық командалар:
<instruction-name> <src1>, <src2>
Екі  адреслы  машинадағы  нұсқаулық 
Нұсқаулық  кез  келген  арифметикалық 
немесе  логикалық  диадалық  операция 
болуы мүмкін. 
Белгілеу екінші аргументтегідей болады.
Бір адреслы командалар:
<instruction-name> <src>
Нұсқаулық  кез  келген  арифметикалық 
немесе  логикалық  диадалық  операция 
болуы  мүмкін.  Тіркеуіштердің  бірі 
белгілеу  тармағы  ретінде  әрекет  ететін 
үнсіз келісіммен аккумулятор  болады. 

55
Нөл адреслы машиналық командалар:
<instruction-name>
Жүктеме, сақтауыш, қосу, алу, көбейту, 
бөлу және т.с.с. 
Стек  негізінде  бағалау  қолданылады. 
Операцияға  керек  аргументтер  стектың 
жоғарғы бөлігінен алынады.
Диадалық  операциялар  бар  өрнек  үшін  екі  кіріс  аргумент  және  бір 
шығыс аргумент бар. Мысалы, add_integer механизмі үшін үш адрес ке-
рек: екеуі кіріс аргументтер үшін және біреуі шығыс аргументтер үшін. 
Кіріс мағынасы бар аргументтер көз деп, ал шығыс мағынасы бар аргу-
менттер белгілеу деп аталады. 
Көтеген  заманауи  процессорларда  үш  адреслы  құрылым  жинағы  бар. 
Соған қарамастан, көптеген адреслар сөздің 16-биттік өлшеміне сый-
май жатады. Екі адреслы машиналардың аккумулятор деп аталатын ар-
найы тіркеуіштері бар. Оны әрқашан белгілеу пункті ретінде пайдалана-
ды және механизмді дербестендіруге керекті битер санын сақтау үшін 
командалар аргументтерінің бірі ретінде пайдаланбайды.  Оны шығыс 
тіркеуіштердің бірі ретінде де пайдалануға болады. Битер санын сақтау 
үшін  аккумуляторлар  нұсқаулықта  жазылмайды.  Аккумулыторды  көз 
ретінде және нұсқаулық бойымен әрі қарай қысқартуды белгілеу үшін 
анық пайдаланады. 
 Нөлдік адреслы машиналадың қандай да бір нақты аргументтері жоқ 
және  аргументтерді  сақтау  үшін  орнатылған  стек  қолданылады.  Нөл-
дік  адреслы  машиналардың  нұсқаулығы  бұл:  жүктемелер,  сақтауыш, 
push, pop, қосу, алу операциялары және т.с.с. Мысалы, қосу командасы 
берілген кезде мәліметтердің екі жоғарғы элементтері стектан АЛҚ-да 
есептелу үшін шығарылады, бағаланады және нәтижесі есептеу стек-
тің жоғарғы жағына қайтадан лақтырылады. Жүктеу және сақтауыш 
нұсқаулықтары мәліметтерді жергілікті айнымалылардан есептеу стек-
тің жоғарғы жағына шығарады немесе есептеу стектің жоғарғы бөлігін-
дегі мәліметтерді жергілікті айнымалыларға сақтайды.  Нөлдік адресті 
машиналар одан да жоғары адресті машиналардың көмегімен қосылуы 
да мүмкін. Жоғары адресті  машиналардағы нұсқаулықтар төменгі адре-
стердің екі немесе одан да жоғары командаларына ауыстырылуы мүм-
кін.  Нөлдік  адресті  машиналар  Java  (JVM)  виртуалды  машинасында 
Java бағдарламасын орындау үшін пайдаланылған. 

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет