Реализующий стек для инструкций ijvm JAVA

Я реализую простой ijvm с использованием стека в Java, однако я столкнулся с очень странным поведением, и я понятия не имею, почему. Так что для моего класса стека у меня есть конструктор

  public Stack(int maxStacksize) {
    maxSize = maxStacksize;
    stack = new Word[maxSize];
    size = 0;
  }

(объявленные maxSize, stack и size являются частными переменными класса. Word - мой собственный класс) my push;

  public static void push(Word input) {
    stack[size] = input;
    size++;
  }

Мне кажется, это нормально, поправьте меня, если я ошибаюсь! Так что, когда вход BIPUSH 20 BIPUSH 40

Я распознаю команду bipush и помещаю их в стек в соответствии с каждой инструкцией, которая работает нормально, я печатал то, что нажимаю, и сначала нажимает 20, а затем 40. Однако после того, как я нажимаю 40, 20 в стеке [0] превращается в 40 почему-то? Я печатал всю стопку всякий раз, когда нажимал что-то, поэтому при нажатии 40 стопка превращается в [40, 40] вместо [20, 40], и я понятия не имею, почему. Я также печатаю "размер" каждый раз, и параметр размера кажется правильным, когда он нажимает. Я знаю, что у меня еще нет чека, если размер меньше 0, я добавлю это позже. Есть идеи?

0 ответов

Другие вопросы по тегам