Приветствуем, геймер! Ты можешь или
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: Стек, указатель стека, счётчик команд, регистр переполнения, синтаксис»

    Загружается
Чат