Нужна помощь в создании множителя с помощью метода в iJVM - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь создать программу в iJVM, используя файл .jas с MIC-1 ASSEMBLER, чтобы ввести два числа с клавиатуры и умножить их вместе, чтобы получить результат EX: 2 * 2 = 4

В приведенном ниже коде я просто выбрал случайные числа, потому что когда я использовал 'in' для получения ввода, он не давал мне ввода

Когда я использую bipush 7 и bipush 2 только в main без метода, получается: EX: Вход х: 20 Ввод y: 2

Я получаю цифру ascii, поэтому я предполагаю, что она принимает гекс 0x20 и 0x02 и умножает ее на 0x40 и выводит символ ascii

.main
.var
x
y
sum
.end-var
    BIPUSH  7
    ISTORE  x
    BIPUSH  5
    ISTORE  y
    BIPUSH  0x40
    INVOKEVIRTUAL   imul
    out


.end-main

.method imul(x,y)
.var
x
y
temp
sum
.end-var    
    BIPUSH  2
    ISTORE  x
    BIPUSH  20
    ISTORE  y
L1: 
    BIPUSH  0
    ISTORE  sum
    GOTO    L2

L2: ILOAD   y
    IFEQ    exit

    POP
    ILOAD   x
    DUP
    IADD
    ISTORE  temp
    GOTO    L3

L3: ILOAD   y
    BIPUSH  2
    ISUB
    ISTORE  y
    GOTO    L4

L4: ILOAD   temp
    ILOAD   sum
    IADD
    ISTORE  sum
    GOTO    L2

exit:   ILOAD   sum
    IRETURN

.end-method
...