Page 37 - 6110
P. 37

9.2.3 Організація в пам'яті комп'ютера
                                Стек може бути організований як масив або множина комірок в
                            певній  області  комп'ютера  з  додатковим  зберіганням  ще  й
                            вказівника  на  верхівку  стека.  Заштовхування  першого  елемента  в
                            стек збільшує адресу вказівника, виштовхування елементу зменшує
                            її.  Таким  чином,  адреса  вказівника  завжди  відповідає  комірці
                            масиву, в якій зараз знаходиться верхівка стеку.
                                Багато  процесорів  ЕОМ  мають  спеціалізовані  регістри,  які
                            використовуються  як  вказівники  на  верхівку  стеку,  або
                            використовують  деякі  з  регістрів  загального  вжитку  для  цієї
                            спеціальної функції в певних режимах адресації пам'яті.

                                9.2.4 Приклади застосування стеків
                                Калькулятори,  які  використовують  зворотню    нотацію,
                            використовують стек для збереження даних обчислень.
                                Існує велика кількість “стеко-орієнтованих” мов програмування
                            (Forth,  PostScript),  які  використовують  стек  як  базову  структуру
                            даних  при  виконанні  багатьох  операцій  (арифметичних,  логічних,
                            вводу-виводу тощо).
                                Стеко-орієнтованими є багато з віртуальних машин, наприклад
                            віртуальна машина Java.
                                Компілятори  мов  програмування  використовують  стек  для
                            передавання параметрів в процесі виклику підпрограм, процедур та
                            функцій.  Спеціалізований  стек  використовується  також  для
                            збереження адрес повернення з підпрограм.

                                9.2.5 Реалізація базових алгоритмів
                                На  високорівневих  мовах  програмування,  стек  може  бути
                            реалізований за допомогою масиву та додаткової змінної.
                                Для  зберігання  елементів  стеку  резервується  масив  S[1..n]
                            певного  розміру  та  додаткова  змінна  top[S],  яка  буде  зберігати
                            індекс верхівки стеку.
                                Операції  push  та  pop  тоді  можуть  бути  записані  так  (без
                            перевірки на переповнення та “незаповнення”):

                                PUSH (S, x)
                                1 top[S]:= top[S]+1 //збільшення індексу на 1
                                2 S[top[S]]:=x //запис нового елемента у верхівку стека

                                POP (S)
                                1 top[S]:=top[S]-1 // зменшення індексу на 1
                                2 return S[top[S]+1] //повернення колишньої верхівки стеку


                                                            36
   32   33   34   35   36   37   38   39   40   41   42