assembly 将C++转换为MIPS汇编

r6vfmomb  于 2023-11-19  发布在  其他
关注(0)|答案(3)|浏览(121)

这段代码是关于找到最大元素从一个数组,我想把这个代码转换成MIPS汇编代码可以任何人帮助我.或者只是告诉我如何在MIPS初始化一个数组。

void max_array()
{
    int a[10]={2,3,421,4,32,4,3,1,4,5},max;
    for(int i=0;i<9;i++)
    {
        cout<<a[i];
    }
    max=a[0];
    for(int j=1;j<9;j++)
    {
        if (max<a[j])
        {
             max=a[j];
        }
    }
    return max;

 }

字符串

deyfvvtc

deyfvvtc1#

这里有一个例子

.data
array1:     .space  12              #  declare 12 bytes of storage to hold array of 3 integers
        .text
__start:    la  $t0, array1     #  load base address of array into register $t0
        li  $t1, 5                  #  $t1 = 5   ("load immediate")
        sw $t1, ($t0)                #  first array element set to 5; indirect addressing
        li $t1, 13                  #   $t1 = 13
        sw $t1, 4($t0)           #  second array element set to 13
        li $t1, -7                  #   $t1 = -7
        sw $t1, 8($t0)           #  third array element set to -7
        done

字符串

yqhsw0fo

yqhsw0fo2#

.data   # variable decleration follow this line

array1: .word   2, 3, 421, 4, 32, 4, 3, 1, 4, 5 #10 element array is declared
max:    .word   2

la  $t0, array1         #load base address of array1
main:                       #indicated the start of the code
#to access an array element ($t0), 4($t0), 8($t0)..........

字符串

rqcrx0a6

rqcrx0a63#

转换为mips

addi $t1, $0, 99 
addi $t4, $0, 9 
add $t3, $t2, $t1 
sub $t3, $t3, $t4

loop: lw $s1, 0($t2)
lw $s2, 0($t3) 
slt $s3, $s1, $s2 
beq $s3, $0, label1 
sub $s4, $s2, $s1 
sw $s4,0($t3) 
j label2

label1: 
sub $s4, $s1, $s2 
sw $s4,0($t3)

label2: 
addi $t2, $t2, 4 
addi $t3, $t3, 4 
subi $t1, $t1,1 
beq $t1, $0, loop

字符串

相关问题