Предположим, что функция в псевдокоде.
int abs_diff(int l, int r) {
int abs_diff = abs(l - r);
return abs_diff;
}
Мне удалось реализовать эту функцию на ассемблере.
abs_diff:
sub $t1, $a0, $a1
sra $t2,$t1,31
xor $t1,$t1,$t2
sub $v0,$t1,$t2
jr $ra #Return
Теперь я хочу реализовать расширение этой функции на ассемблере,Псевдокод для новой функции:
int abs_diff_new(int r1, int g1, int b1, int r2, int g2, int b2) {
int abs_diff_new = abs(r1-r2) + abs(g1-g2) + abs(b1-b2);
return abs_diff_new;
}
Я не знаю, как реализовать эту функцию, поскольку для этой новой функции требуется 6 аргументов, но MIPS предоставляет только 4 регистра ($ a0- $ a3) для передачиаргументы.Как я могу изменить мой abs_diff?