З поверненням.
Тепер ми продовжимо з того місця, на якому зупинилися.
Отже, ми відкриваємо наш пуш 13, натискаємо X, ставимо точку зупинки тут.
Цього разу ми будемо грати поп-музику.
Тож ми біжимо до цього місця, переступаємо і продовжуємо переступати, поки не дійдемо до цього поштовху.
Ми поки що не збираємось виступати.
Ми збираємося провести певну операцію.
Це означає, що ми виконаємо приріст на -, а потім виконаємо ще одну операцію, приріст
на -, а потім виконаємо ще одну операцію, приріст на -.
Чому ми це робимо?
Ми робимо це для того, щоб продемонструвати, що після того, як ми натиснули - to -, ми можемо робити все, що завгодно, зі значеннями
в цих регістрах, тому що у нас вже є резервна копія в стеку.
Бачите, весь ваш стек має ці резервні значення.
Давайте переступимо через цей останній поштовх, щоб побачити це.
Гаразд, тепер ми отримали - -, значення в -, яке насправді є цими трьома значеннями, було виштовхнуто до
стеку.
Ви можете побачити тут,
це -, -, і -.
Тож його виштовхнули до стопки.
Таким чином, у вас є резервна копія оригінальних значень у реєстрі.
Після того, як ви отримали резервну копію реєстру в стеку, ви можете робити з - -- все, що завгодно.
Це не має значення.
Чому?
Тому що після того, як ви виконали всі ці обчислення в цих регістрах, ви можете відновити початкові
значення назад в регістр, витягнувши їх зі стеку назад в регістр.
У цьому полягає сенс, ну, це одне з застосувань стека.
Використовується для зберігання значень як сховище, тимчасове сховище для регістрів.
Отже, коли ви штовхаєте, ви штовхаєте в такому порядку: -, -, -, -, або в будь-якому іншому порядку, який вам подобається.
Але коли ви вискакуєте, ви повинні вискакувати у зворотному порядку.
Отже, коли ви робите хлопок, ви повинні спочатку зробити хлопок -, потім хлопок -, а потім хлопок - у зворотному порядку.
Чому?
Тому що, коли ти вискакуєш, він вискакує зверху.
Він не спливе знизу.
Коли ти штовхаєш, ти штовхаєш звідси.
Так.
Спустіться донизу і натисніть -, - підніміться нагору, натисніть -.
- піднімається нагору.
Так, так.
А верх - як млинець.
Коли ви покладете перший млинець, він опиниться внизу, другий млинець - зверху,
а останній - на самому верху.
Отже, коли ви вискакуєте, то спочатку вискакує самий верхній.
Це означає, що останнім прийшов - першим пішов: LIFO, останнім прийшов, першим пішов.
Ось як ти з'являєшся на світ.
Ви повинні вискочити в зворотному порядку.
Отже, оскільки - була останньою, яку ви натиснули, ви повинні спочатку натиснути -, потім
-, потім - і тільки потім -. Пам'ятайте: останнім увійшов, першим вийшов.
Отже, в цей момент ви маєте виконати INC -, але перш ніж ми це зробимо, давайте наберемо наші
інструкції pop.
Поп -, поп - і поп -.
Тепер ми можемо закрити його і запустити перший інкремент.
Тепер початкове значення - становить 358626.
Отже, коли ми вводимо це, біжимо, переступаємо через
це, воно стає 627.
Додаємо сюди, додаємо сюди, додаємо сюди.
Тож це значення зараз тут змінилося.
Отже, їх стає сім.
Спочатку було 626, тепер стало 627.
Але не хвилюйся.
У нас є один примірник у стосі.
Далі ми їдемо в INC -.
Отже - 484.
Переступаємо, - тепер стає 100485.
Тож цей тепер стає 485.
Початкове значення було 484.
У нас є примірник для нього, для нас.
Отже, далі ми переходимо до INC -, тож переступайте.
- спочатку було 47.
Коли ми переступаємо через неї, вона стає 48, тож і ця тепер стає 48.
Але наш екземпляр у стосі залишився незмінним:
47, як бачите, ось тут. Ми бачимо, що копія в стеку ніколи не змінюється,
вона однакова.
Це - те, що тут, це - те, що тут, а це - те, що тут.
Далі, тепер ми хочемо
відновити початкове значення -.
Отже, все, що нам потрібно зробити, це натиснути -.
Отже, коли ви натиснете -, він візьме все, що знаходиться зверху, і покладе це в -.
Отже, ви робите копію цього, робите копію цього,
а потім копіюєте її
сюди, щоб перезаписати.
Отже, ми прийшли
до 00047.
Тож давайте подивимося, як це відбувається зараз.
Гаразд.
А після того, як він зробить копію і скопіює її сюди, він додасть чотири до -, так що - опиниться
тут.
Отже, поп - це протилежність поштовху.
Pop скопіює значення, яке знаходиться за адресою, на яку вказує - назад у вказаний
регістр.
Потім ви додаєте чотири до адреси -.
Ось що відбувається зараз.
Скопіюйте 47 сюди, а потім плюс чотири до -.
Отже - опускається вниз і вказує на наступну адресу в стеку.
І тоді цей буде проігнорований.
Його можна використовувати повторно, переробляти тощо.
Нас це не хвилює.
Нас турбує те, що зараз - це рух вниз.
Таким чином, переміщення вниз, додаючи чотири, означає звільнення стопки або очищення стопки.
Гаразд, тепер давайте переступимо через цю попсу.
-, - зараз 48.
Коли ми переступаємо, він бере значення 47 і додає його до -.
- зараз 47.
А тепер бачите, наш - вказує на FED0, FED0.
Чому?
Тому що ви додали чотири.
Тож він опускається вниз, і верхівку вже не видно.
Якщо ви підніметеся сюди зараз, то побачите, що старе значення все ще тут, 47, але стек зменшився, тому що ми додали
чотири.
Гаразд.
Отже, наступна інструкція - натиснути -.
Отже, для pop
- він зробить копію цього значення і помістить її в -.
Отже, він зробить копію, а
потім вставить її, щоб перезаписати все, що там є.
Тож це перший крок.
Ти це зробив.
Далі буде плюс чотири.
Отже, буде плюс чотири.
Це означає -.
Тепер спускаємося сюди.
Тому що нуль плюс чотири - це чотири.
Тож давайте подивимося, як це відбувається зараз.
На даний момент - тут вказує на нуль.
Але коли ви граєте, а потім, коли ви виконуєте поп, воно візьме це значення тут, 100484, а потім
скопіює його в - щоб замінити його.
Давай подивимося.
Переконайся, що ми це скасуємо.
Він стає 100484.
А тепер, оскільки ви плюс чотири, ваш - перемістився сюди і вказує на наступну вищу адресу
стека.
Тепер він вказує на цю адресу, FED4.
Як бачите, FED4, FED4.
Так.
Тепер те, що станеться далі, буде "-".
То коли ти збираєшся вийти?
Що він робить?
Першим кроком буде копіювання всього, що знаходиться за цією адресою.
Адреса така.
Тепер, що б не було за адресою, це 358626.
Зробіть копію та скопіюйте її до -.
Це називається попса.
Далі йде від плюс чотири до -. Тепер це плюс чотири.
Стає D8.
Отже, він буде вказувати сюди.
Гаразд.
Тож подивіться зараз. - тепер FED4 і має таке значення: 358626. Він скопіює це до -.
Тож давайте переступимо через нього, і, дійсно, він скопіювався.
Вона скопіювала 358626 до -, і отримала плюс чотири.
Тож коли ви плюс чотири, вона падає.
А тепер ваш - вказує на 64FED8.
У цьому і є сенс поп-музики.
Гаразд, ось як можна використовувати стеки.
Важливо пам'ятати, що в стеках порядок проштовхування і виштовхування змінюється на протилежний.
Отже, якщо ви штовхаєте - першим, то ви повинні вискочити - останнім.
І якщо ти штовхаєш - останнім, то ти повинен виштовхнути - першим.
Тож останнім зайшов, першим вийшов.
Як млинець.
Коли ви складаєте млинці один на одного і знімаєте млинці, завжди знімайте
їх зверху, а не знизу.
Останнім зайшов, першим вийшов.
Якщо ви помилитеся, якщо натиснете спочатку -, а потім -, то ви зміните деякі значення тут на протилежні.
Тож це насправді хороший спосіб обмінятися цінностями.
Якщо ви хочете поміняти місцями значення - і -, то ви також змінюєте порядок, в якому ви переходите сюди.
Ось як ви можете використовувати push і pops у своїх програмах, у своїх інструкціях.
Тепер, між натисканнями і відпусканнями, ви можете робити все, що завгодно, тому що регістр має свою
копію всередині стека.
Усі цінності, які там були, тепер зберігаються на стелажі для безпечного зберігання.
Отже, коли ви закінчите робити все, що хочете, це може бути додавання, множення і будь-які інші операції, які ви хочете, все,
що завгодно, так довго, як ви хочете.
Зрештою, коли ви закінчите робити з регістрами все, що завгодно, ви завжди можете повернути
їх назад, щоб відновити початкове значення в регістрах.
Отже, це все для цього відео в стеку.
Дякуємо за перегляд.