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



Pdf көрінісі
бет24/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   ...   18   19   20   21   22   23   24   25   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


орны; max – максимум;  read – оқу; call find max – максимумды табу 
шақырылым;  assign  –  тапсыру;  add  –  қосу;  jump  –  секіру;  halt  – 
тоқтату; if – егер; return – қайтару; loop back – контурды қайтару; call 
– шақыр
у; for – үшін; void find max – максимумды табуға жарамсыз;
while – сол кезде; program – бағдарлама; push – басу; save RP – RP-ны 
сақтау; set – орнату; create var – айнымалыларды жасау; out of loop –
контурдын сыртында; previous – алдыңғы; stack growth – стек өсуі; 
code area – код орыны; data area – мәлімет орыны.
5.10 сурет. Генерация кода и данных в реализации на основе стека.
Деректер аумағы үш бөлікке бөлінеді: жаһандық айнымалы үшін ста-
тикалық ауданы, бағдарламаның басты кадрлары, және шақырылатын 
find_max кадры. Жахандық айнымалылар массивті m[4] пен айнымалы 
max  тұрады.  Жаһандық  айнымалылар    статикалық  болып  бөлінеді: 
m[0] →d[0], m[1] → d[1], m[2] → d[2], m[3] → d[3], және max  → d[4]. 
Негізгі бағдарламаның кадрі d[5] мен d[6] арасында орналасқан, ал ал 
шақырылатын «алмасу» d[7] мен d[9] арасында. Негізгі программа ка-
дрында қайтару көрсеткіші мен динамикалық байланыс жоқ. d[7] және 
d[8] ұяшықтары басқару элементін негізгі программа, а қайтару үшін 
қайтару көрсеткіші мен динамикалық байланысты сақтайды.
Негізгі программаның құрамында екі жергілікті айнымалы үшін  жад 
ұяшықтары бар: i →d[5] және j → d[6]. find_max программасының ка-
дрында  құрамында  қайтару  көзсеткіші  (ҚК)    →  d[7],  динамикалық 
байланыс (ДБ) → d[8] және локалдық айнымалы i → d[9] бар. ҚК d[9] 
ұяшығын көрсетеді, КШС d[10],ал ДБ негізгі программаның кадр ба-
засын  көрсетеді,  яғни  d[5].  ҚК  (ҚК)  код  аумағындағы  с[11]  ұяшығын 
көрсетеді, ол орындалатын “halt”командасына тең келеді. 
Аудан коды қазіргі орындау процесінің шеңберінде жад орындарды кіру 
үшін кадр көрсеткішін пайдаланады. [0] және [5] арасындағы нұсқаула-
ры орындау «for» цикліне сәйкес келеді.
[0] нұсқаулық КК көрсеткен жад ұяшығындағы 0 мәнін қосады, бұл «i = 
0» өрнегінің төмендеғгейлі аудармасы болып табылады; [1] нұсқаулық 
d[КК] мәнін 3 константасымен салыстырады. Осы мәлімдеме орындау 
PSW  бойынша  орындалады,  және  [2]  командасы  PSW  жалаулар  пай-
даланып, while (әзірге) циклінен шығу үшін [6] операторына өтеді. [6] 
нұсқаулығы төменгі индекс мәнін m[i]  жадқа екі рет жүгінумен  есеп-
тейді:  біріншісі d[КК] (мәні i) мәнін оқиды, ал одан кейін идестелген 
жадты оқиды. Оқу жүйедегі шақыру деңгейін белсендіреді. [5] нұсқау-

257
лары қайтып[1]  нұсқаулығына – «for»  циклінің басқы нүктесі, өту үшін 
нұсқаулық көрсеткішінен 4-ті шегеріп тастайды.  
[6] және [9] ұяшықтары бар коды саласындағы нұсқаулар түрлі көрсет-
кіштерін орнату және кіші бірінші тапсырмасы көшу үшін пайдаланы-
лады. [6] орналасқан нұсқаулығы, в стеке жоғарғы жағында «КИ + 5» 
итеріп кезде (D [7]) қайтару меңзерді белгілейді, және КШС 1 ұлғайды. 
[7] орналасқан нұсқаулығы,  КК мәнін стектің жоғарғы жағына (D [8]) 
итеріп,  динамикалық  байланыс  орнатқан  кезде  КШС  мәні  1  ұлғайды. 
Регистрлер  мәні  өзгеріс  кезінде  сондай-ақ  стекке  итеріледі.  [8]-дағы 
нұсқаулық  КК-ны    find_max  программасын  қол  жеткізу  үшін  КК-ны 
КШС-ке қосу арқылы орнатады. Шақыратын бағдарламаларды есептеу 
алғашқы күйін сақтау үшін қажетті бақылау жад ұяшықтарының ығысу; 
бұл регистрлер, PSW және статикалық сілтемені ғана сақтайтын болса 
өзгереді.  [9]  нұсқаулық  символы  кестеде  ығысу  іздеу  арқылы  бірінші 
санатшасы кіші бағдарлама нұсқаулар find_max үшін бақылауды өтеді: 
бұл жағдайда ығысу 2-ге тең. [10] нұсқаулығындағы соңғы нұсқаулық 
жоғары деңгейлі «STOP» нұсқаулығына сәйкес келеді. 
[11] нұсқаулығы  жадқа жергілікті айналымдарға ұяшық қосу арқылы 
КШС-ті белгілейді: бұл жағдайда өлшемін 1. D → Max [4] және м [0] → 
D [0]: беттегі нұсқауларды [12] жоғары деңгейдегі тапсырмасы «Max = 
м [0]» сәйкес келеді. Мен D [КК] →: беттегі нұсқауларды [13] жоғары 
деңгейдегі нұсқаулар «I = 1» сәйкес келеді. [14] және [19] ұяшықтары 
арасындағы  нұсқаулары  болып  табылады  цикл  сәйкес,  сондай-ақ  [20] 
және [22] ұяшықтары арасындағы нұсқаулары find_max  рәсімдерді қай-
тару сәйкес келеді. [14]  ұяшықтағы нұсқаулық тұрақты i 3 айнымалыны 
салыстырады. Ілмектер жүзеге бар ұяшықта нұсқаулары, ал, і айныма-
лы мән 3 артық болса [15] ұяшығындағы нұсқаулық «STOP» циклінан 
шығады.  [16]  ұяшықтағы  нұсқаулық  m  [i]  >  макс:  i  →  d[КК]  жоғары 
деңгейдегі нұсқаулар макс → d[4] және d[d[УК]] → m [i] сәйкес келеді. 
[17] ұяшықтағы нұсқаулары басқаша-шартты бір нұқсанды бөлігіне сәй-
кес келеді және [19] ұяшыққа оператордың басқару нұсқауларды алады. 
[18]  ұяшықтағы  нұсқаулар  жоғары  деңгейдегі  нұсқаулар  макс  =  m  [i
тең. [19] ұяшықтағы нұсқаулықтар болып циклдің басына кері өту үшін 
«КИ» 5 бастап шегеріледі.
Қайтару тәртібіне тастайды көрсеткіштер мынадай тәртіппен орында-
лады:
1. [20]  ұяшықтағы нұсқаулық кадрдың find_max программасында пайда-
ланылатын жадты босату үшін КК-2 мәнді КШС көшірмелейді. 

258
1. [21] ұяшықтағы нұсқаулық (d[УК-1])  динамикалық нұсқаулығын КК-
ге көшіру арқылы  негізгі программаның көрсету кадрын қалпына кел-
тіреді.  
1. [22]  ұяшықтағы  нұсқаулық  КБ-дегі  (d[КШС])  КИ  адресті  көшіру 
арқылы басқаруды негізгі программаға кері береді. 
 Қол жеткізу үшін айнымалы алаптың жады кіру үшін қажет: бірінші ин-
декстелген айнымалы мәнін алу үшін, екінші тиісті массив элементінің 
жад ұяшық мәнін алу үшін. Бұл ақпаратқа қосымша жад компиляторын 
қысқаратады, сақтау жолымен тіркелімдерінде индекстелетін айныма-
лы.  Кэш-жады  пайдалану,  сондай-ақ  үстеме  шығындар  қол  жеткізуді 
жақсартады.
5.5 Параметрлерді жіберуді үлестіру
Ақпарат алмасу тиісті іске асыру шеңберінде параметр өту тетіктерін 
түріне қарай өзгереді. Мысалы, құны арқылы шақыру үшін ресми па-
раметрдің жад ұяшықта білдіру айырысу мәнін көшіру талап етеді. Сіл-
теме бойынша  шақыру үшін. ресми параметрдің жад ұяшықта нақты 
параметр базалық мекенжайын сақтау керек. 
Бағдарлама  аясында  ресми  көрсеткіштер  бойынша  нақты  шығыс  па-
раметрі  кеңістік  деп  аталатын  шақыратын  бағдарлама  параметрлері 
және жад орналасу үшін кеңістік жады кіріс параметр кеңістігі болып 
табылады.Шығыс параметрдің кеңістік бағдарлама шақыратын кадрға 
тиесілі, және  кіріс параметр  кеңістік бағдарлама  деп  аталатын  кадрға 
жатады. Алайда, кіріс және шығыс параметрлерінің ауданы бір бірінің 
ұстіне біріктіпіледі, және шақыратын және шақырылатын программа-
лар қол жеткізе алатындай болу керек. Шақырылатын бағдарлама дереу 
параметр кеңістік енгізгеннен кейін сақталған алғашқы күйін ақпаратты 
есептеу алғашқы күйін сақтайды. КК сақталған күйі жайындағы ақпа-
ратты көрсетеді. Ресми параметрдің ығысуы программаның көрсету ко-
дексіне қатысты теріс болып табылады. Алайда, қалған жергілікті айны-
малы есепке көрсету кодексіне қатысты оң болып табылады.
5.5.1 Мағынасы бойынша шақыруды үлестіру
Білдіру нақты параметр мәндерінің құнына шақыру барысында шығыс 
параметрлерін  кеңістікте  бағаланады  және  сақталады.    Шақырылған 
программа  PSW-ті  сақтайды,  және  шақыратын  бағдарлама  тізілімдер 
және әр түрлі көрсеткіштер өзгерді.Кіретін параметрлерге қол жету жеке 
ақпараттық объектілер үшін d[КК – ығысу] арқылы және массивті ақпа-
раттқ элементтерге d[КК- база-адрес-ығысу + d[КК + индекс- ығысу]] 
арқылы жүзеге асырылады, бұл жерде база-адресс массивтағы бірінші 

259
элементтің ығысуы, ал ығысу- индекс ол массивтегі элементке қол жету 
үшін i айнымалыс арқылы индекстелетін ығысу болып табылады. Үйін-
ді композициялық нысандарына қол жеткізу, сондай-ақ ресми параметр 
жады объект сілтемені көшіру арқылы жүзеге асырылады.
Мысал  5.4
Сурет 5.11 мәні бойынша шақыру дерексіз орындалуын көрсетеді. Не-
гізгі бағдарлама маңызы бар екі айнымалы i және j тиісті формальды 
параметрлер x және y көшіреді. Sub-алмасу х және у ресми параметр-
лері мәндерін өзгертеді. Есептеу нәтижесі бағдарламасында кері алмасу 
берілмейді.
Program main – негізгі бағдарлама; integer – бүтін; data area– мәлімет 
орны;  assign  –  тапсыру;  add  –  қосу;  jump  –  секіру;  halt  –  тоқтату; 
return – қайтару; call swap – шақыру алмастыру; program – бағдар-
лама; push – басу; set – орнату; create temp – уақытша жасау; previous 
– алдыңғы; stack – стек; code area – код орыны; writer – жазушы; temp
– уақытша; copy - көшіру
Сурет  5.11 Нысанды шақырулар сұлбасы 

260
Қадыр  негізгі  орналасу  d[0]  -  d[3]  ке  дейін  тұрады,  ал  шақырылатын 
кадр  программасы  d[2]-  d[6]дейін,  тұрады.  D  [2]  және  D  [3]  жабатын 
ұяшықтар  х және у формальды параметрлеріне сәйкес келеді. [2] және 
D [3] ұяшықтары негізгі бағдарламамен шығыс параметрінің кеңістігі 
ретінде қарастырлады, ал шақыртатын процедура «айырбас» кіріс пара-
метр кеңістік ретінде қарастырылады.  [4] және [5] ұяшықтарында КК 
мен ДБ-ның көрсеткіштерін сақтайды: d[4] ұяшығында write(i) (жазу) 
командасы  сақталады,  ал  d[5]  ұяшығында  динамикалық  байланыс 
сақталады. «temp» айнымалысы d[6] ұяшығында салыстырылады. 
Шақырылатын «swap» (алмасу)  процедурасына дейін басқару элементі 
негізгі программада болады, КК d[0] ұяшығын көрсетеді, КШС көрсет-
кіші d[2] ұяшығын көрсетеді. «swap» программасының КК көрсеткіші 
d[6] ұяшығын көрсетеді. D[КК-1] динамикалық байланыс ұясы болып 
табылады, және d[ҚК-2] келесі нұсқаулықтың кері-мекенін сақталады, 
ол  негізгі  бағдарламада  орындалуы  керек.  Статикалақ  байланыс  бол-
майды. 
Кеңістік  шығыс  көшірмесі  параметрі  үшін  параметрлерді  жіберу  КК 
көрсеткішін қолданады. [2] және [3] ұяшықтарындағы итеру D [КК + 1] 
және  итеру (D [КК])   нұсқаларын пайдална отырып нақты параметр-
лер мәнін шығыс параметрлер ұяшықтарына d[КК] и d[КК+1] көшіреді 
негізгі бағдарламасына қалған нұсқаулар. түрлі көрсеткіштерді орнату 
үшін және кіші бағдарлама алмасу көшу,пайдаланылады, олар мысалда 
5.3 талқыланды.
d[ҚК-4] және d[ҚК-3] жазбалары x және y формальды параметрлеріне 
қол жеткізу үшін тиісінше қолданылады.4 және 3 ығысуы белгілі мөл-
шерін  сақталған  ақпарат  жағдайын  мөлшері  мен  кіріс  параметрлері 
арқылы  есептеледі.  [11]  ұяшығындағы  нұсқаулық  көшіреді  де,  мәні  х 
айнымалы мәнін айналмалы шаблонныңжад ұяшығына  көшіреді. [12] 
ұяшығындағы нұсқаулық айналмалы у мәнін х-ке, ал [13] ұяшығындағы 
нұсқаулық  шаблон  айналымындағы  мәнді  у  жад  ұяшығына  көшіреді. 
[14]  және  [16]  ұяшықтары  арасындағы  үш  ұяшық  басқару  элементін 
кері шақырылған программаға беру нұсқалығы болып табылады, бұны 
біз 5.3 мысалда қарастырдық.  [16] нұсқаулығында қайтару көрсеткіш 
ұяшығын кіріс параметр ұяшығының өлшемін білген жағдайда, компи-
ляция кезінде анықтауға болады.
5.5.2 Сілтеме арқылы шақыруды жүзеге асыру 
Сілтеме  бойынша  шақыру  кезінде  шақырылатын  программа  ақпарат-
тық объектінің негізгі адресін шеғыс параметр кеңістігінде сақтайды, 
ол шақырылған программа үшін нақты кіріс параметрі кеңістігі болып 

261
табылады. Мөлшер сілтемесіне қол жету d[d [КК – параметр-ығысу] + 
индекс-ығысу] арқылы жүзеге асады, бұл жерде ығысу-параметрі бұл 
шақырылатын программаның нақты кіріс параметрінің негізгі адресінің 
ығысуы болып табылады, ал индекс ығысуы шақырылған программа-
ның  кадрындағы  жергілікті  айнымалының  индексінің  ығысуы  болып 
табылады. Индексі айнымалы жергілікті айнымалы басқа болса, екінші 
элементі  тиісті,  механизмін  шешуге  алмастыра  алады.  Қатып  келу 
кезін-де шақырылған программаның есебінен айтарлықтай  еш қимыл 
жасап  қажет  емес,  себебі  сілтеме  бойынша  шақыру  физикалық 
айналымға    үздіксіз  мутацияға  мүмкіндік  береді.  Сондықтан  анық 
түрде қандай да болсын нәтижелерді жіберіп қажет емес.
Мысал  5.5
5.12-суретте  х және у нақты көрсеткіштердің жад ұяшықтарында сәй-
кесінше i және j айналымдардың жад ұяшығының адресі сақталады. х 
және у i және j-тің нақты параметрлерін сақтайтындықтан параме-
трлерді [2] ұяшығына жіберу r-мәнінің орнына d[КК],  КК жад адресін 
шығарады, ал [2] ұяшығына жіберу r-мәнінің орнына d[КК+1],  КК +1 
жад адресін шығарады.

262
Program main – негізгі бағдарлама; integer – бүтін; data area– мәлімет 
орны;  assign  –  тапсыру;  add  –  қосу;  jump  –  секіру;  halt  –  тоқтату; 
swap – алмастыру; program – бағдарлама; push – басу; set up– орнату; 
dyn. Link – динамикалық байланыс; create temp – уақытша жасау; 
previous – алдыңғы; stack growth – стек өсуі; code area – код орыны; 
write – жазу; temp – уақытша; void swap – жарамсыз алмасу; integer 
temp – уақытша бүтін
СУРЕТ  5.12 Сілтеме бойынша шақыруды жүзеге асыру схемасы
[11],  [12] және [13] ұяшықтары нұсқаулары нақты параметрге қол жет-
кізу үшін формалды х және у параметрлерін қолданады. Олар жадқа екі 
сұранысқа иеленеді: айнымалы i нақты параметр мәнін кіру үшін d[d 
[УК-4]] , және айнымалы j  нақты параметр мәнін кіру үшін d[d[УК-3]]. 
d[d  [УК-4]]    нақты  параметр  і  жад  мекенжайын  қамтамасыз  екенін, 
ал  d[d[УК-3]]  нақты  параметр  j  жад  мекенжайын  қамтамасыз  екенін 
ескеріңіз. Бұрын талқыланған басқа нұсқалар нәтижесә бойынша шақы-
руға ұқсайды. 
5.5.3 Нәтиженің мағынасы бойынша шақыруды үлестіру
Нәтижесінде  мәні  бойынша  шақыру  барысында  программа  нақты  па-
раметрлері  мен  сақтау  шығыс  параметрлерін  кеңістікте  тиісті  жад 
ұяшықтарының  нәтижесінде  мәні  үшін  өрнектердің  мәні  бағаланып 
шақырады.  Программа  аяқталғаннан  кейін,  нәтижесі,  қажет  болған 
жағдайда,  ұяшықтың  тиісті  айнымалы  қоңырау  жоспарлы  кеңістіктен 
шығыс  параметр  қайтып  көшіріледі.  Кеңістік  опция  шығыс  шақыру  
және  программа  кеңістігі  қолданылатын  параметрлері  енгізілген  сәт-
тен бастап, нәтижесі автоматты шақырушының программасына қайтып 
беріледі. 

263
Program main – негізгі бағдарлама; integer – бүтін; data area– мәлімет 
орны; assign – тапсыру; add – қосу; jump – секіру; halt – тоқтату; swap 
– алмастыру; program – бағдарлама; push – басу; set – орнату; create
– жасау; previous – алдыңғы; stack growth – стек өсуі; code area – код
орыны; write – жазу; temp – уақытша; void swap – жарамсыз алмасу; 
integer temp – уақытша бүтін; return – қайтару; copy - көшіру
5.13 сурет. Мән нәтижесінде шақыруды жүзеге асыру схема
Нәтижесі  бойынша  шақыру  және  ресми  параметрлер    жергілікті  ай-
нымалылар ретінде қарастырылады, және жеке ақпараттық объектілер 
үшін  d[КК – ығысу ] арқылы қол жетімді, ал массивті элементтер үшін  

264
d[КК-  базовый-адрес-ығысу  +  d[КК  +  индекс-ығысу]]    арқылы  қол 
жетімді. Бұл жерде ығысу-параметрі бұл шақырылатын программаның 
нақты кіріс параметрінің негізгі адресінің ығысуы болып табылады, ал 
индекс ығысуы шақырылған программаның кадрындағы жергілікті ай-
нымалының индексінің ығысуы болып табылады.
Мысал  5.6
5.13-суретте  көрсетілген,  сол  бағдарлама  ауысуына  параметрді  шақы-
ру мәні бойынша нәтиже. Нақты параметрлері мәні бойынша шақыру 
«#»  таңбасы  көмегімен  таңбаланған.  Деректер  облысы  мәні  бойынша 
шақырудағыдай  болып  табылады.    Код  аймағында  тағы  екі  косымша 
нұсқаулар бар: [8] және с [9] ұяшықтарындағы нұсқаулық нәтижелерді 
шығыс параметрлер кеңістігінен х және у айнымалыларын нақты жад 
ұяшығына  көшіреді.  Бақылау  аймақ  кодын  қайтарылады  кейін,  ресми 
параметр нәтижесі келесі жоғары деңгейдегі тапсырмасы бұрын нақты 
жад орынға қайтып көшіріледі. Бұл шығыс параметр кеңістігін бірнеше 
рет пайдаланылатынына назар аударыңыз,  әртүрлі программалар қай-
та-қайта шақырулар арқылы белгілі айнымалылар суреті ретінде пай-
даланылуы мүмкін емес екенін  ескеріңіз. Барлық басқа нұсқаулар 5.5.1 
бөлімінде талқыланды және шақыру мәні ұқсас болды.
5.6 Рекрусивті процедуралардың төмендеңгейлі мінез-құлқы 
Рекурсивті процедура әр рекурсивті шақыру үшін жаңа енген белсен-
діруді  тудырады.  Сол  орын  кодын  аймағын  және  статикалық  сілтеме 
кадр аясында мекенжайы әрбір дананың балл оралу рекурсивная проце-
дураның әр данасы рекурсивті рәсімі енгізілген, оған сәйкес, сол тәртіп-
пен жақтауын көрсетеді. Алайда, динамикалық сатыдағы байланыс mго 
(m > 2) базалық кадрдың (m − 1)  мекен-жайы көрсетiлуге ші данасын 
және  рекурсивті  тәртібін  бiрiншi  сатыдағы  рекурсивті  тәртібін  туын-
даған жақтау тәртібін көрсетеді.
Мысал  5.7
Рекурсивті  тәртіппен  статистикалық  және  динамикалық  шақыру  қа-
рым-қатынастар  арасындағы  айырмашылық  факторлық  кіші  шақы-
рушының  тәртібі  үлгіні  көрсете  отырып,  суретте  5.14  түсіндіріледі  – 
факториалды бағдарлама- бұл негізгі бағдарлама арқылы шақырылатын 
бағдарлама. 

265
Main  –  Негізгі;  Factorial  –  факториалдық;  dynamic  links  –  динами-
калық  байланыстар;  static  links  –  статикалық  байланыстар;  stack 
growth – стек өсуі
5.14 сурет.  Рекрусивті процедуралардың динамикалық және статикалық 
байланысы 
Бағдарламаның негізгі факторлық (2) болып табылады. Факторлық (2) 
(1)  факторлықты  шақырады  және  Факториалық  (1)  мәнді  күтіп  өзін 
тоқтата  тұрады.  Динамикалық  сілтеме  факторлық  (1)  жақтау  базасы 
Факториалық (2) басталғанын көрсетеді. Сол сияқты, факторлық (1) (0) 
факторлық тудырады. Факториалық үшін динамикалық сілтеме тәртібі 
шақыруды жақтау (0) факторлық базалық жақтауын (1) көрсетеді. Алай-
да, факторлық (1) факторлық (2) және барлық факторлық шақыру  сал-
дарынан  статикалық  аясында  (0)  факторлық  бағдарламасы  енгізілген, 
оған сәйкес бағдарламаның, негізгі базалық жақтауын көрсетеді.
5.7 Ерекшеліктер өңдегңшінің іске асуы
Ерекшелік  өңдегіштері  көшу  амалдағыштарды  пайдаланып  орында-
лады. Бағдарлама ерекшелік өңдегіштер бар немесе шақырылушының 
рәсімінде  жылғы  оператор  орындаудан  қайтарңан  кезде,  «табысты 
аяқтауды.»  туын  орнату  нұсқаулық  кез  келген  қоспағанда  сәтті  орын-
далған болса, онда бақылау оператор филиалы пайдаланып, ерекше өі-
деушіден  кейін  мәлімдемесінде  барады.  Әйтпесе,  бақылау  ерекшелік 
өңдеушілерді арқылы өтеді. Ол әрбір ерекше өідеуші шарттарын тексе-
реді және шарт шын болса, тәртіппен тиісті ұстанымын ұялы нұсқаулар-
ды таңдайды. Ерекшелік мәлімделген болса, онда активтендіру жазба 
орындалып тұрған бағдарлама орнын сақтайды жақтау тәртіппен түсу 
болып табылады. Ерекшелік өідеуінен кейін, келесі ерекше шартты тек-

266
серу үшін  басқару элементі кері қайтарылад. 
Ерекшелік өңдегіші сәтті орындалды болса, онда бақылау қазіргі уақыт-
та орындалып жатқан программада  қалады. Әйтпесе ерекшелік өңде-
уінің  ешқайсысы  ерекшелік  жағдайын  сәйкес  келмесе,  онда  салалық 
нұсқаулық  ретпен  оралу  үшін  бақылауды  алады,  айрықшалықтарды 
тексеріліп шақырушының бақылау программасына қайтару құсбелгісін 
қойып, процесс қайталанады.
Жүзеге  асыру  үшін  тағы  бір  тәсіл  ерекшелік  стек  деп  аталатын  жеке 
стек  ерекшелік  қамтамасыз  ету  болып  табылады.  Бірінші  нұсқаулық 
ерекше  өңдеу  жолдауы  және  жоғарғы  жақтауын  қосылу  орындау  сте-
ке итеріледі. ерекшелік өңдеуі табысты орындалғаннан кейін, табысты 
ерекшелік  өңдеушілерді  жоғарыда  жақтаудың  аясында  барлық  стек 
бақылау жойылады.
ҚЫСҚАША КОРЫТЫНДЫ
Бұл  тарауда  біз  императивті  бағдарламалау  тілдерінің  абстрактілі  мо-
делін  іске  асыруды  оқыдық.  Нақты  іске  асыру  егжей-тегжейлі  болып 
табылады. Алайда, бұл дебат бізге жақсы іске асыруды түсіну және де-
ректер, аралық деңгейде абстракция басқару әр түрлі қол жеткізуге мүм-
кіндік береді.
Бұл  тарауда,  ауданда  тұрғысынан  деректер  мен  нұсқаулары  сілтегіш 
тізіліміне  басқаруды  абстрактілі  машинаның  және  оның  мінез-құлық 
түсінігі талқыладық. Деректер ауданы бірінші класты заттарды қолдау, 
тілдерді  қоспағанда,  тіркелген  кодты  пайдаланып,  үздіксіз  өзгереді. 
статикалық өріс, бақылау дестесін және үymeler: деректер ауданы үш 
бөлікке  бөлінген.  Статикалық  облысы  компиляция  кезінде  бекітіледі 
және  орындау  кезінде  ұлғаймайды  немесе  азаяды.Стек  және  үйменің 
орындау кезінде өседі және қысу мүмкін. Стек сызықтық өсуде. Үйінді 
- барлық кіші және деректер ұяшықтарға көрінетін еске жалпы ауданы 
кез  келген  уақытта  талап  ету  бойынша  бөлінуі  мүмкін.  Көрсеткіштер 
тізбектерінің арқылы байланыстырылған үйіндісіне дене жасушалары 
логикалық деректер құрылымы.
Статикалық бөлу жад ұяшықтарының қол жеткізу кез-келген меңзерді 
пайдаланбай тікелей жүзеге асырылады, сондықтан компиляция кезінде 
жады бөлетін тұрақты жады бөлу схемасы болып табылады. Статика-
лық бөлу орындау кезінде жады өзгертпей картаға негізгі жады талап 
ақпарат объектілері үшін пайдаланылады. Жаһандық және статикалық 
айнымалылар статикалық бөліндіге  бөлінеді. Олар жарияланған бағдар-
лама бірлік немесе бірлікте шектеулі қызмет ету мерзімі динамикалық 
айнымалылар мен деректер нысандар жергілікті, стек бақылау бойынша 

267
бөлінеді. Рекурсивті деректер құрылымдар мен динамикалық деректер 
нысандардың қызмет көрсету мерзімі бағдарлама блоктардан ұзағырақ, 
және олар үйінді бойынша анықталады. Логикалық бақылау диаграмма-
сы абстрактілі басқару деңгейі нұсқауларға жоғары деңгейдегі абстрак-
цияның аудару үшін пайдаланылады.Мұндай brlt, breq, brne, brgt, brge 
және brne сияқты шартты филиалы тапсырмасы, кейін шартты білдіру 
бас тарту, Шартты сөйлемнің құрылысына <қалғанының-мәлімдемесін-
де> беруге басқару және итерациялық конструкцияларын циклын шығу 
үшін пайдаланылады.
Статикалық асыру статикалық бөлу және деректерге тікелей қол жету 
үшін    пайдаланады.  Келесі  орындалатын  нұсқау  мекенжайын  жадын 
сақтау  және  аталатын  программаны  бақылау  үшін  филиал  нұсқауды 
пайдалана көшу жасауға процедураны шақырады. Барлық нұсқауларды 
аяқтағаннан  кейін,  аталатын  программалар  келесі  тапсырмасына  қай-
тып беруге бақылау сілтегіш тапсырмасы сілтегіш қайтару үшін мәнді 
тағайындайтын программаларды шақырады.
Стек негізделген іске асыру әрбір программаны шақыру үшін бірнеше 
көрсеткіштер,  және  жеке  жақтауларды  пайдаланады.  Кадр  көрсеткіші 
ығысумен  бірге  жадқа  немесе  деректер  объектінің  жергілікті  айны-
малыны  кіру  үшін  пайдаланылады.  Динамикалық  сілтеме  программа 
аяқталғаннан кейін шақырушының программа кадрға қайтып алу үшін 
пайдаланылады. Статикалық сілтеме немесе дисплей регистрлер жер-
гілікті  емес  айнымалылар  кіру  үшін  пайдаланылады.  Программа  па-
раметрлерін  хабарласпас  бұрын  программа  енгізу  параметрлерін  бос 
орын  болып  шығыс  параметр  кеңістікте  беріледі.  PSW  программа 
шақырушылар  индекстер  мен  статус  сөздер  сақталады,  меңзер  шақы-
рылған программалардың кадрына қол жеткізу үшін өзгереді, ал бақы-
лау шақырылған программаның бірінші нұсқаулығына өтеді. Програм-
ма аяқталғаннан кейін, кері процесс шақырушының регламентiн, кейін 
қайта тапсырмасы параметрлерін және аудару бақылау трансмиссиялық 
тетігінің  байланысты,  шақырушының  бағдарламасының  ортасын  қал-
пына  келтіру  үшін  жіберу  параметрлерін  пайдаланылады.  Үйіндісіне 
таратылатын  композитті  нысанды,  ортақ  пайдалану  үшін,  үйінді  де-
ректер объектісіне қол жетуге мүмкіндік беретін мәні бойынша қоңы-
рау пайдаланыңыз. Сілтеме бойынша шақыру кезінде, нақты параметр 
сілтегіш  ұяшықтың  ресми  параметрі  сақталады.  Нақты  параметр  жад 
ұяшыққа қатынау үшін бірінші,  R-мәнге қол жеткізу, екінші R мәнін 
табу  үшін  екі  жад  кірме  талап  етеді.  Нақты  параметрлері  нәтижелері 
деп аталатын параметр енгізу параметр аймақ болып аумақты, шығатын 
мән көшірмелерімен шақырыңыз. программа оралғаннан кейін, шығыс 

268
параметр саласындағы нәтижелері нақты айнымалы жад ұяшыққа қай-
тып көшіріледі.
Рекурсивті функциялары әр шақыруға жаңа кадрды жасайды.. Статика-
лық және динамикалық байланыс сілтеме түрлі жолдармен рекурсивті 
функцияны  көрсетеді:  Шақыру  базалық  кадрға  динамикалық  сілтеме 
балл, және қоңыраулар статикалық қосылу ендірілген рекурсивті функ-
ция оған сәйкес, базалық жақтау тәртібін көрсетеді.
Ерекшелік  өңдейтін  екі  әдістің  бірін  пайдаланып  жүзеге  асырылады: 
(1)  программа  кадларында  ерекшелік  өңдеу  процедураларын  орынды 
сақтау немесе (2) жеке ерекшелік стек. Бірінші әдіс, егер барлық өңде-
уіш ерекшеліктер ақау берсе, онда басқару элементі кері шақырылады, 
және  процесс  қайталанады.  Екінші  әдісте  егер  өңдеуші  ерекшеліктер 
сәтті орындалатын болса, онда жоғары табысты кадрдың барлық маман-
дары стектен ерекшелігінен жойылады.

Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   26




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

    Басты бет