www.wikidata.uk-ua.nina.az
V informatici stek viklikiv angl call stack ce struktura danih u viglyadi steka yaka zberigaye informaciyu pro aktivni pidprogrami komp yuternoyi programi Takij tip steka takozh vidomij pid nazvami stek vikonannya stek upravlinnya abo rantajm stek chasto skorochuyetsya do prosto stek Hocha pidtrimka funkcionuvannya steka viklikiv duzhe vazhliva dlya bud yakoyi programi detali roboti zi stekom zazvichaj prihovani pid chas roboti z visokorivnevimi movami programuvannya Stek viklikiv vikoristovuyetsya dlya dekilkoh pov yazanih cilej ale golovne jogo priznachennya vidslidkovuvati tochku povernennya z kozhnoyi aktivnoyi pidprogrami tobto adresu instrukciyi kudi maye buti povernute vikonannya pislya zavershennya pidprogrami Aktivnimi pidprogramami vvazhayutsya taki sho buli viklikani ale she ne zavershili vikonannya povernennyam Yaksho napriklad pidprograma DrawSquare viklikaye pidprogramu DrawLine z chotiroh riznih misc todi kod DrawLine maye znati kudi jomu povertati vikonannya Ce zazvichaj robitsya kodom dlya kozhnogo vikliku pidprogrami vseredini DrawSquare vin zapisuye adresu instrukciyi nastupnoyi pislya konkretnogo vikliku adresi povernennya na verhivku steka viklikiv Algoritm povtoryuyetsya dlya kozhnogo nastupnogo vkladenogo vikliku Pri povernenni z pidprogrami adresa povernennya znimayetsya zi steka i keruvannya peredayetsya nastupnij instrukciyi u prizupinenij pidprogrami Zmist 1 Opis 2 Priznachennya steka viklikiv 3 Struktura 4 Vikoristannya 4 1 Obrobka miscya vikliku 4 2 Obrobka v viklikanij pidprogrami 4 3 Obrobka povernen 4 4 Rozmotuvannya 5 Stek viklikiv i testuvannya programnogo zabezpechennya 6 Analiz produktivnosti 7 Bezpeka 8 Div takozh 9 Primitki 10 Zovnishni posilannyaOpis RedaguvatiU zv yazku z tim sho stek viklikiv vlashtovanij yak stek pidprograma sho viklikaye zashtovhuye adresu povernennya na verhivku steka a pidprograma yaku viklikayut pislya zavershennya svoyeyi roboti vishtovhuye adresu povernennya zi steka i povertaye keruvannya instrukciyi za ciyeyu adresoyu Yaksho pidprograma yaku viklikali viklikaye inshu pidprogramu abo rekursivno samu sebe todi vona zashtovhuye nastupnu adresu povernennya na verhivku steka i t d Yaksho rozmir steka poglinaye uves vidilenij pid stek prostir todi vinikaye pomilka perepovnennya steka yaka zazvichaj prizvodit do krahu programi Dodavannya zapisu pro pidprogramu inodi nazivayetsya namotuvannya angl winding vidpovidno vidalennya zapisu rozmotuvannya angl unwinding Zazvichaj z programoyu pov yazuyut lishe odin stek viklikiv abo bilsh tochno z kozhnoyu nittyu procesu hocha dodatkovij stek mozhe buti stvorenij z metoyu obrobki signaliv Cherez taku unikalnist danogo ponyattya v konkretnomu konteksti mozhna vzhivati prosto termin stek V visokorivnevih movah programuvannya specifika steka viklikiv zazvichaj prihovana vid programista yakij operuye naborom funkcij a ne pryamo pam yattyu steka Z inshogo boku bilshist asemblernih mov zaluchayut programista do manipulyuvannya stekom Podrobici manipulyuvannya stekom v pevnij movi programuvannya zalezhat vid kompilyatora operacijnoyi sistemi i dostupnogo naboru instrukcij Priznachennya steka viklikiv RedaguvatiYak zauvazheno vishe golovnim priznachennyam steka viklikiv ye Zberezhennya adresi povernennya Koli pidprograma viklikayetsya vinikaye potreba u zberezhenni misceznahodzhennya instrukciyi na yaku maye povernutisya vikonannya Vikoristannya same steka dlya zberezhennya ciyeyi adresi maye vazhlivi perevagi vidnosno inshih sposobiv Odna z nih polyagaye v tomu sho kozhne zavdannya maye svij okremij stek viklikiv takim chinom pidprograma mozhe buti povtornovikoristana riznimi zavdannyami nityami Inshoyu perevagoyu ye avtomatichna pidtrimka rekursiyi Koli funkciya viklikaye sebe rekursivno adresa povernennya shorazu maye buti zberezhena Cya mozhlivist avtomatizuyetsya stekom Stek viklikiv mozhe mati dodatkovi priznachennya zalezhno vid movi programuannya i arhitekturi komp yutera Sered nih mozhut buti Lokalne shovishe danih Pidprograma chasto potrebuye pam yat dlya zberezhennya znachen lokalnih zminnih zminnih znachennya yakih vidomi tilki pid chas vikonannya pidprogrami i ne zberigayutsya po vihodi z neyi Chasto buvaye zruchno vidilyati dlya takih zminnih misce prosto ruhayuchi verhivku steka dostatno shob zabezpechiti neobhidnij prostir Ce duzhe shvidke rishennya u porivnyanni z roztashuvannyam v kupi Zauvazhimo sho kozhna okrema pidprograma maye svij okremij prostir u steku dlya lokalnih zminnih Peredacha parametriv Pidprogami chasto vimagayut vid kodu sho yih viklikaye parametri i roztashuvannya znachen cih parametriv u steku ne ye nezvichnim rishennyam Yaksho parametriv vsogo dekilka i yihnij rozmir malij todi dlya peredachi yih v pidprogramu mozhna vikoristati registri procesora ale yaksho rozmir parameriv ne dozvolyaye zuzhitkuvati cej sposib peredachi bude neobhidnij prostir v pam yati Stek dobre pracyuye dlya peredachi takih parametriv osoblivo cherez te sho z kozhnim viklikom nastupnoyi pidprogrami znachennya parametriv zminyuyutsya shorazu dlya nih vidilyayetsya okreme misce Stek obchislennya Operandi arifmetichnih abo logichnih operacij zazvichaj roztashovuyut v registrah i todi provadyat nad nimi pevni dij Odnak v deyakih situaciyah operandi mozhut nakopichuvatisya do dovilnoyi glibini todi postaye pitannya vikoristannya chogos vidminnogo vid registriv Stek podibnih operandiv skorishe shozhij na RPN kalkulyator nazivayetsya stekom obchislennya i mozhe roztashovuvatisya u steku viklikiv Vkazivnik na potochnij ob yekt Deyaki ob yektozoriyentovani movi programuvannya napriklad C pri vikliku funkciyi zberigayut vkazivnik this razom z argumentami funkciyi u steku Vkazivnik this vkazuye na ob yekt pov yazanij z metodom sho viklikayetsya Ohoplyuvalne seredovishe pidprogrami Deyaki movi napriklad Pascal ta Ada pidtrimuyut vkladeni pidprogrami yaki dozvolyat vnutrishnij pidprogrami mati dostup do danih ohoplyuyuchoyi pidprogrami tobto parametriv i zminnih iz vlasnogo seredovisha ohoplyuyuchoyi pidprogrami Take statichne vkladennya mozhe povtoryuvatisya funkciya ob yavlena v funkciyi ob yalevnij v nastupnij funkciyi Realizaciya maye zabezpechiti sposib u yakij funkciya na bud yakomu statichnomu rivni vkladennya mogla b posilatisya na dani z kozhnogo rivnya vkladenosti ohoplyuvalnogo seredovisha Zazvichaj ce zdijsnyuyetsya cherez vikoristannya vkazivnika na otochuyuchij kadr vin zvetsya angl downstack link abo angl static link dlya togo shob rozriznyati z angl dynamic link sho posilayetsya na togo hto viklikaye neobov yazkovo statichnogo predka Napriklad movi yaki dozvolyayut pidprogramam viklikati sebe rekursivno z mozhlivistyu utvorennya v rezultati bagatoh kadriv vikliku dlya vnutrishnoyi pidprogrami ale vsi ci statichni posilannya vkazuyut na odin i te same seredovishe ohoplyuyuchoyi pidprogrami Zamist statichnih posilan posilannya na otochuyuchi statichni kadri mozhut buti realizovani u viglyadi masivu vkazivnikiv Inshi stani povernennya Okrim adresi povernennya v deyakih seredovishah v yakih prisutni inshi mashinnii ao programni stani sho povinni buti vidnovleni pislya povernennya z pidprogrami Ce mozhe buti riven privileyiv informaciya stosovno obrobki vinyatkiv arifmetichni rezhimi i tak dali Pri potrebi ci dani mozhut buti zberezheni u steku tak samo yak i adresa povernennya Zazvichaj stek viklikiv vikoristovuyetsya dlya adresi povernennya lokalnih parametriv i parametriv vidomih yak kadr vikliku V riznih seredovishah rizni obov yazki pokladayutsya na stek viklikiv V movi programuvannya Forth napriklad tilki adresa povernennya i lokalni zminni zberigayutsya u steku viklikiv tut vin vidomj yak stek povernennya parametri zberigayutsya v okremomu steku danih Struktura RedaguvatiStek viklikiv skladayetsya z stekovih kadriv inodi aktivacijnih zapisiv Ce zalezhni vid arhitekturi strukturi sho mistyat informaciyu pro stan pidprogrami Kozhnij stekovij kadr vidpovidaye pidprogrami yaka bula viklikana i she ne zavershilas Napriklad yaksho pidprogama DrawLine zaraz vikonuyetsya i bula viklikana pidprogramoyu DrawSquare verhnya chastina steka maye viglyadati podibnim chinom nbsp Stekovij kadr na gori steka vidpovidaye potochnij pidprogrami V najzagalnishomu varianti stekovij kadr vklyuchaye prostir dlya lokalnih zminnih pidprogrami adresi povernennya i znachennya parametriv peredanih v pidprogramu Adresa verhivki steka mistitsya v registri yakij nazivayut vkazivnik steku Takozh dostup do pam yati vseredini kadru mozhna otrimati cherez okremij registr chasto zgaduvanij yak vkazivnik kadru zazvichaj vin vkazuye na fiksovanu tochku v strukturi kadru taku yak roztashuvannya adresi povernennya Stekovi kadri mayut riznij rozmir Rizni pidprogrami mayut riznu kilkist parametriv tozh cya chastina mozhe mati riznij rozmir dlya riznih pidprogram Naspravdi deyaki movi programuvannya pidtrimuyut dinamichne vidilennya pam yati dlya lokalnih zminnih u steku v takomu vipadku rozmir ciyeyi chastinu kadru mozhe zminyuvatis pid chas vikonannya pidprogrami i buti nevidomim pid chas kompilyuvannya V ostannomu vipadku dostup cherez vkazivnik kadru shvidshij nizh cherez vkazivnik steku zazvichaj neobhidnij cherez nemozhlivist peredbachiti zmishennya vid verhivki steka do takih znachen yak adresa povernennya V bagatoh sistemah vkazivnik kadru mistit pole dlya zberezhennya poperednogo znachennya registra vkazivnika kadru tobto znachennya yake vin mav pid chas vikonannya pidprogrami sho viklikala Napriklad na pereduyuchij diagrami stekovij kadr DrawLine bude mati komirku pam yati vidvedenu pid zberezhennya znachennya vkazivnika kadru kotrij vikoristovuye DrawSquare Ce znachennya zberigayetsya na vhodi v pidprogramu i vidnovlyuyetsya dlya povernennya Nayavnist takogo polya v stekovomu frejmi dozvolyaye kodu mati dostup do kozhnogo kadru znizu potochnoyi pidprogrami movi programuvannya yaki pidtrimuyut vkladeni pidprogrami v stekovomu kadri mayut pole sho mistit vkazivnik na stekovij frejm ohoplyuyuchoyi pidprogrami yaka j viklikala cyu vnutrishnyu vkladenu pidprogramu Ce inodi nazivayetsya displej 1 Cej vkazivnik zabezpechuye vnutrishnij pidprogrami mozhlivist dostupu do lokalnih zminnih i parametriv ohoplyuyuchoyi pidprogrami z yakoyi vona bula viklikana Dlya deyakih cilej stekovi kadri viklikovoyi ta viklikanoyi pidprogram mozhut peretinatisya Peretin skladayetsya z pam yati dlya parametriv V deyakih seredovishah viklikova pidprograma zashtovhuye kozhen z argumentiv na verhivku steka rozshiryuyuchi takim chinom svij stekovij kadr i potomu robit viklik V inshih seredovishah viklikova pidprograma zazdalegid otrimuye vidilene misce na gori stekovogo kadra dlya zberezhennya argumentiv yaki vona peredaye viklikanij pidprogrami Ce misce inodi nazivayut dilyanka vihidnih argumentiv abo viklikova dilyanka V comu vipadku romir takoyi dilyanki obchislyuyetsya kompilyatorom tak shob zabezpechiti vsi mozhlivi vikliki pidprogram Vikoristannya RedaguvatiObrobka miscya vikliku Redaguvati Zazvichaj najmenshi diyi nad stekom viklikiv potribni same v misci vikliku pidprogrami i ce ye dobre bo mozhe buti bagato misc vikliku kozhnoyi pidprogrami Znachennya aktualnih argumentiv obchislyuyutsya na misci vikliku cherez yih osoblivist dlya kozhnogo vikliku i zashtovhuyutsya v stek abo zapisuyutsya v registri v zalezhnosti vid ugodi pro vikliki sho vikoristovuyetsya Potomu vikonuyetsya instrukciya napriklad BAL perehid i zv yazuvannya angl Branch and Link dlya peredachi keruvannya kodu cilovoyi pidprogrami Obrobka v viklikanij pidprogrami Redaguvati V viklikanij pidprogrami pershij vikonanij kod zazvichaj zvetsya prolog pidprogrami vin vikonuye neobhidnu gospodarsku robotu pered pochatkom roboti logichnogo kodu pidprogrami Kod prologa zazvichaj zberigaye adresu povernennya zalishenu instrukciyeyu vikliku v registri zashtovhuyuchi yiyi v stek Shozhim chinom potochnij vkazivnik steku ta abo vkazivnik kadra mozhe buti zberezhenij Yak variant deyaki arhitekturi avtomatichno zabezpechuyut podibnu funkcionalnist i todi kod prologa ne maye vikonuvati ci operaciyi Yaksho vikoristovuyetsya vkazivnik kadra tipovij vstup vstanovlyuye nove znachennya registra vkazivnika steka z potochnogo znachennya cogo vkazivnika Prostir dlya lokalnih zminnih mozhe buti vidilenij pokrokovoyu zminoyu adresi verhivki steka Mova programuvannya Forth dozvolyaye yavne namotuvannya steka viklikiv ce nazivayetsya stek povernennya Obrobka povernen Redaguvati Koli pidprograma gotova povernuti keruvannya vona vikonuye epilog yakij vidkochuye kroki prologa Tipovo ce vidnovlennya znachen registriv takih yak znachennya vkazivnika kadra zi stekovogo kadra cilkom vishtovhuye stekovij kadr zminoyu znachennya vkazivnika steka i nasamkinec peredaye vikonannya instrukciyi za adresoyu povernennya V bagatoh pogodzhennyah viklikiv sered elementiv vishtovhnutih zi steka epilogom prisutni pochatkovi znachennya argumentiv v takomu vipadku viklikova programa zazvichaj ne maye neobhidnosti manipulyuvati stekom pislya povernennya v neyi Odnak v deyakih ugodah pro viklik ce zavdannya pokladayetsya na viklikovu pidprogramu Rozmotuvannya Redaguvati Povernennya z viklikanoyi pidprogrami vishtovhne verhnij kadr zi steka mozhlivo zalishivshi znachennya yake povertaye viklikana pidprograma Deyaki movi programuvannya taki yak Paskal dozvolyayut globalni goto perehodi dlya peredachi keruvannya nazovni z vkladenoyi pidprogrami i v poperedno viklikanu ohoplyuyuchu funkciyu Taka diya potrebuye rozmotki steka cherez stilki kadriv skilki neobhidno shob vidnoviti seredovishe zovnishnoyi pidprogrami v yakij znahoditsya adresa instrukciyi povernennya Zazvichaj take vikoristovuyut tilki dlya obrobki pomilok Inshi movi taki yak Object Pascal zabezpechuyut obrobku vinyatkiv yaka takozh potrebuye rozmotuvannya steka Stekovij kadr pidprogrami mozhe mistiti odin abo bilshe zapisiv sho viznachayut obrobku vinyatkiv U vipadku viniknennya vinyatkovoyi situaciyi stek rozmotuyetsya doti doki ne bude znajdenij obrobnik gotovij prijnyati zloviti danij tip vinyatku Common Lisp dozvolyaye prokontrolyuvati sho vidbudetsya pri rozmotuvanni steka cherez vikoristannya specialnogo unwind protect operatora Pri zastosuvanni prodovzhennya stek logichno rozmotuyetsya i znov namotuyetsya zi stekom prodovzhennya Stek viklikiv i testuvannya programnogo zabezpechennya RedaguvatiNeshodavno zayavlenij pidhid 2 vikoristovuye stek viklikiv v duzhe vidminnij sposib vid opisanih Vin vikoristovuye jogo dlya zmenshennya naboru testiv Korotko zmenshennya naboru testiv shukaye mozhlivosti dlya zmenshennya kilkosti testovih prikladiv v nabori testiv odnochasno zberigayuchi visokij vidsotok efektivnosti viyavlennya pomilok Dva testovih prikladi vvazhayutsya totozhnimi yaksho voni utvoryuyut odnakovij nabir stekiv vikliku pid chas vikonannya Po podrobici divis 3 Analiz produktivnosti RedaguvatiPereglyad steka vikliku v dovilnij moment vikonannya programi mozhe buti duzhe korisnim dlya pokrashennya produktivnosti program Yaksho instrukciya vikliku pidprogrami z yavlyatsya cherez pevni promizhki chasu mozhlive pokrashennya cherez vidalennya vilikiv Divis Analiz produktivnosti ta Glibinne vibirannya Bezpeka RedaguvatiZmishuvannya danih potoku keruvannya vplivayuchih na vikonannya kodu adresa povernennya zberezheni vkazivniki kadriv i prostih danih programi parametri znachennya do povernennya lokalni zminni u steku viklikiv porodzhuye riziki bezpeki mozhlivist eksplojtuvannya cherez perepovnennya buferiv Div takozh RedaguvatiPerepovnennya stekovogo buferaPrimitki Redaguvati c2 AlternativeMicroprocessorDesign Call Stack Coverage for GUI Test Suite Reduction by Scott McMaster and Atif M Memon In Proceedings of the 17th IEEE International Symposium on Software Reliability Engineering ISSRE 2006 Nov 2006 Call Stack Coverage for GUI Test Suite Reduction by Scott McMaster and Atif M Memon IEEE Trans Softw Eng 2008 IEEE Press Zovnishni posilannya RedaguvatiFunction Viklik i vkazivnik kadra v 68000 Arhivovano 24 lipnya 2010 u Wayback Machine Otrimano z https uk wikipedia org w index php title Stek viklikiv amp oldid 40139527