2016-11-11 9 views
1

Как использовать возвращаемое значение функции в другой функции в mips? Я знаю, что мне нужно использовать стеки, но я не знаю, как это сделать.Использовать возвращаемое значение функции внутри оператора if в mips

Например, если у меня есть код ниже:

int is_more_than_a_dozen(int a, int b) { 
    if (sum(a, b) > 12) 
    return 1; 
    else 
    return 0; 
} 
int sum(int a, int b) { 
    return a + b; 
} 

Я знаю, как сделать все для вызова функции суммы() в если заявления, за исключением.

Спасибо


Edit:

Это моя функция суммы:

sum: 
    add $v0, $a0, $a1 
    jr $ra 
+1

Возвращаемое значение будет в '$ v0' по соглашению. Для этого вам не нужен стек. – Jester

+0

, поэтому мне нужно использовать только beq для сравнения $ v0 и временного var, который содержит 12? @Jester – user3142443

ответ

2

Вам не нужно использовать стеку. Обратите внимание, что для вызова функции sum вам нужны регистры $a0 и $a1, но значения, которые вам нужны, уже находятся в этих двух регистрах. Поэтому вам просто нужно вызвать функцию, и параметры уже находятся в правильном месте.

Вы можете использовать функцию jal для вызова функции и jr для возврата из функции. Вы можете использовать slti для установки возвращаемого значения.

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

+0

Благодарим вас за ссылку. Чтобы использовать SLTI, мне нужны $ s и imm (согласно ссылкам). Если я установлю imm на 12 (используя li), могу ли я просто заменить $ s на $ v0? @ smac89 – user3142443

+1

@ user3142443 да, это именно то, что вам нужно сделать – smac89