Приветствуем, геймер! Ты можешь или
16+
1336767112530

Геймер Arkanus 28

153

Учебник по DCPU-16. Часть 3: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксис

Учебник по DCPU-16. Часть 3: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксис
0x10c - Учебник по DCPU-16. Часть 3: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксисУчебник по DCPU-16. Часть 3: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксис

Стек и указатель стека

Представьте себе обычную стопку книг или, быть может, журналов — не суть важно. Можно что-нибудь положить (на английском это зовётся push) в стопку, или же вытащить (pop) из оной. В любом случае, сделать это как угодно не выйдет. Можно либо класть наверх, либо снять сверху. Подобная структура на английском характеризуется как LIFO ("last in, first out", то есть "последним зашёл, первым вышел").

Представили? Так вот, это и есть стек. В компьютере всё устроено точно так же: можно либо поместить элемент в верхушку стека, либо вытолкнуть оттуда же. Указатель стека (SP, Stack Pointer) хранит адрес верхушки стека, то есть последний помещённый элемент.

Когда мы помещаем некоторое значение в стек, указатель стека увеличивается, чтобы соответствовать новому размеру, а значение в этой позиции копируется в память. При изъятии наоборот: значение копируется в память, указатель уменьшается.

Переполнение

У стека, о котором мы говорили ранее, есть ограничение на размер. Когда мы помещаем элементы в стек, он увеличивается в размерах и указатель следует его примеру. Если размер стека превышает верхнуюю границу, происходит переполнение стека и значения присваиваются регистру переполнения (O, Overflow).

Счётчик команд

Счётчик команд (PC, Program Counter) указывает на то место в памяти, в котором начинается следующая инструкция. Каждая инструкция размещена в памяти и счётчик команд раз за разом оббегает их по порядку. Счётчику команд можно сообщить конкретное место, чтобы он мог перескочить туда и выполнить соответствующий участок кода.

Синтаксис

Вот основы синтаксиса DASM для DCPU-16:

Трёхбуквенное сокращение обозначает код операции (opcode), то есть какой-то инструкции, среди которых SET, ADD, MUL, AND, IFE, XOR и так далее.

Обозначение
Комментарий
:заголовок
Двоеточие в совокупности с произвольным словом является заголовком. Можно приказать счётчику команд прыгнуть к заголовку и выполнить код под ним.
;комментарий
Всё, что записано после точки с запятой, является комментарием. Поскольку то, что вы там напишете, игнорируется процессором, можно спокойно создавать небольшие заметки. Для новичков комментарии особенно полезны, поскольку помогают разобраться в коде.
[]
Это значение элемента, чей адрес заключен в квадратных скобках. Например, 0x8000 — адрес памяти, [0x8000] — значение, хранящееся по этому адресу.





В следующей части учебника мы рассмотрим бинарные и сдвиговые операторы. При создании поста использовались DCPU-16 DASM Assembly Tutorials.

153
Еще в блоге
Интересное на Gamer.ru

7 комментариев к «Учебник по DCPU-16. Часть 3: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксис»

  • Думаю, если в игре все будет завязано только на программировании, то игра не взлетит, в отличии от майнкрафта.


    Avatar

    Плюсатор Tristram 3


  • Громадное сообщество еще не вышедшей игры 0x10c смотрит на тебя, как на говно.
    Tristram писал:
    Думаю, если в игре все будет завязано только на программировании, то игра не взлетит, в отличии от майнкрафта.


    Avatar

    Геймер f-duck 6


  • "За блогом следят 35 человек. 4 игрока отметило игру как «любимую»."
    39 с половиной человек это, конечно, "громадное" сообщество.
    f-duck писал:
    Громадное сообщество еще не вышедшей игры 0x10c смотрит на тебя, как на говно.
    Tristram писал:
    Думаю, если в игре все будет завязано только на программировании, то игра не взлетит, в отличии от майнкрафта.


    Avatar

    Плюсатор Tristram 3


  • Tristram писал:
    "За блогом следят 35 человек. 4 игрока отметило игру как «любимую»."
    39 с половиной человек это, конечно, "громадное" сообщество.
    f-duck писал:
    Громадное сообщество еще не вышедшей игры 0x10c смотрит на тебя, как на говно.
    Tristram писал:
    Думаю, если в игре все будет завязано только на программировании, то игра не взлетит, в отличии от майнкрафта.
    Если ты думаешь, что сообщество этой игры всего-лишь 39 человек с геймера то ты ОЧЕНЬ ошибаешься. Иди на официальные форумы и посмотри количество фанатов.
    P.S. Прошу тебя - не располагай свой текст над цитируемым. Я минут 5 с тегами мучился


    11152588

    Геймер Volik 16


  • Volik писал:
    Tristram писал:
    "За блогом следят 35 человек. 4 игрока отметило игру как «любимую»."
    39 с половиной человек это, конечно, "громадное" сообщество.
    f-duck писал:
    Громадное сообщество еще не вышедшей игры 0x10c смотрит на тебя, как на говно.
    Tristram писал:
    Думаю, если в игре все будет завязано только на программировании, то игра не взлетит, в отличии от майнкрафта.
    Если ты думаешь, что сообщество этой игры всего-лишь 39 человек с геймера то ты ОЧЕНЬ ошибаешься. Иди на официальные форумы и посмотри количество фанатов.
    P.S. Прошу тебя - не располагай свой текст над цитируемым. Я минут 5 с тегами мучился
    Мне кажется, геймер показывает интерес простых людей к этой игре. Может быть кучка гиков-программистов чья плотность населения на профильных форумах высока интересуются этой игрой, многого ожидают от еще не вышедей игры, прорекламированной нотчем. Высокий порог входа + интерес для ограниченной группы людей + вероятная хардкорность. Может ли подобная игра стать коммерчески успешной в наши дни? Вся надежда только на расширения.
    Если игра будет интересной, то супер. Но я думаю, что не взлетит.


    Avatar

    Плюсатор Tristram 3


  • мне на секунду показалось что хабр переехал на геймер


    Darky-knight-fullmetux-alchemist-ed-6554

    Геймер NoZloy 18


  • На реддите уже появились посты о том, как эта игра уже сделала их жизнь лучше. Напомню - она еще не вышла. Да что там говорить, никто толком ничего не видел, кроме концепции и спецификации ЯП.
    Поддержка reddit'a, github'a, habr'a - это уже просто невероятно громадная аудитория. При чем на столько громадная, что ты даже не представляешь. А сюда еще подключи массу фанатских форумов/блогов.
    И ты говоришь, что эта игра будет интересна кучке "гиков"? *окау*
    Как уже выше писал, многие НЕПРОГРАММИСТЫ выучили этот простенький язык и пошли дальше - начали учить другие ЯП. То, что будут неосиляторы, которым будет рвать попку от того, что НИПАИГРАТЬ в несомненно крутую игру - ясно изначально.


    Avatar

    Геймер f-duck 6


Чат