не уверен, что это правильное место, чтобы обратиться за помощью в решении проблем с кодированием.Но я пытаюсь преобразовать этот код в C ++ в инструкции MIPS.В настоящее время у меня есть этот код для замены массива символов на месте:
void swap(char *a, char *b){
char temp = *a;
*a = *b;
*b = temp;
}
int main(int argc, char** argv) {
int i, j;
const int size = 5;
char string[] = {'h', 'e', 'l', 'l', 'o'};
j = size - 1;
for(i = 0; i < j; i++){
swap(&string[i], &string[j]);
j--;
}
cout << string;
return 0;
}
Инструкции MIPS, которые у меня сейчас есть:
.text
#size, i, j in $s0, $s1; $s2
#base address of string in $s3
addi $s0, $zero, 5 # size = 5
add $s1, $zero, $zero # i = 0
add $s2, $s0, -1 # j = size - 1
la $s3, string
forLoop1:
slt $t0, $s1, $s2 #i < j
beq $t0, $zero, end1 #if i > j, branch end
jal swap
subi $s2, $s2, 1 #j--
end1:
#---------------------------------------------------------------
swap:
lb $v0, 0($a0) #get LHS byte
lb $v1, 0($a1) #get RHS byte
sb $v1, 0($a0) #store LHS byte
sb $v0, 0($a1) #store RHS byte
jr $ra
.data
string:
.asciiz #hello
Я очень растерялся, когда дело доходит до написания MIPSинструкции.Может кто-нибудь может дать мне некоторую помощь или совет?Один конкретный вопрос, который у меня возникнет: как установить указатели в качестве аргументов и как я буду их реализовывать?Кроме того, как бы я сделал вывод?