Эмулятор троичного компьютера: стек

Эмулятор троичного компьютера: стек

Сообщение nezabudka » 29 янв 2017, 19:53

Простенько и со вкусом. В качесве стека выбрала массив фиксированного размера.
В экспериментальном варианте для наглядности использовала целые числа вместо структуры.
В главной функции поочередно в стек ложим три целочисленных значения и так же поочередно
снимаем их со стека в обратном порядке как и требует алгоритм работы стека. Это только основа
которая будет в дальнейшем обрастать дополнительным кодом, например нужно будет
продумать изменение данных в регистре PS определяющим вершину стека, я склонна полагать
что раз адреса стека находятся вне адресного пространства то и стек PS можно организовать
как флаг из целого числа, а не структуры трайта и оставить так как есть в коде в виде глобальной
переменной во втором поле структуры стека.
[spoiler]
Код: выделить все
/* Надо написать еще две функции call и ret
 * которые будут использовать pop и push
 * и в конечном варианте надо подставить
 * вместо данных определенную ранее структуру трайта.
 */
#include <stdio.h>
#include <stdlib.h>
#define STACK_S 10

typedef struct stack_t {
   unsigned short data[STACK_S];
   unsigned short size;
} Stack_t;

Stack_t stack;

void push(unsigned short value) {
   if (stack.size == STACK_S)
      exit(1);
   stack.data[stack.size] = value;
   stack.size++;
}

int pop() {
   if (stack.size == 0)
      exit(1);
   stack.size--;
   return stack.data[stack.size];
}

int main(void) {
   unsigned short digit1 = 1;
   unsigned short digit2 = 2;
   unsigned short digit3 = 5;
   push(digit1);
   push(digit2);
   push(digit3);
   printf("%hu\n", pop());
   printf("%hu\n", pop());
   printf("%hu\n", pop());
   return 0;
}
[/spoiler]
Пошла коммитить
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватар пользователя
nezabudka
Местный говорун
Местный говорун
 
Автор темы
Сообщений: 614
Фото: 180
Стаж: 3 года 6 месяцев 26 дней
Откуда: Ростов на Дону
Благодарил (а): 286 раз.
Поблагодарили: 147 раз.

Эмулятор троичного компьютера: стек

Спонсор

Спонсор
 

Вернуться в C/C++

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron