2013-04-14 5 views
3

Я пишу простую программу для вычисления абсолютного значения нескольких целых чисел в IJVM для архитектуры MIC1. Я использую эмулятор, расположенный here.Инструкция IJVM ILOAD не загружает правильное значение

Вот код:

BIPUSH 0xC0 
DUP 
ISTORE i1 
ISTORE i2 

LDC_W OBJREF 
ILOAD i1 
INVOKEVIRTUAL 
OUT 

LDC_W OBJREF 
ILOAD i2 
INVOKEVIRTUAL abs 
OUT 

Где абс представляет собой метод, чтобы вычислить абсолютное значение целого числа.

Первый вызов abs работает нормально и вычисляет абсолютное значение 0xC0 правильно, выводя 0x11. Однако второго вызова нет, и выдает 0x77.

Когда я наблюдаю за инструкцией по кадру стека, используя эмулятор, второй ILOAD заканчивается нажатием 0x00000000 на стек вместо 0xffffffc0, как и первая инструкция. Это означает, что только первый вызов функции фактически выводит правильное значение.

Кто-нибудь знает, почему он выдает 0x00000000 вместо этого в последующих звонках?

ответ

0

Я исправил это после небольшого расследования - в рамках метода, который неправильно использовался, была инструкция.