Реализующий стек для инструкций 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, я добавлю это позже. Есть идеи?