MIPS assembly for a simple for loop

后端 未结 4 1353
长发绾君心
长发绾君心 2021-02-09 00:24

I need to translate this C code to MIPS assembly. Here is the C code:

int tmp = 0; 
for (int  j = 0; j < 15; ++j) 
     tmp = tmp * 2 + 3

Th

相关标签:
4条回答
  • 2021-02-09 00:53

    Your loop goes from 0 to 14, so your bgt instruction should be: bgt $t0,14,exit I think.

    .

    0 讨论(0)
  • 2021-02-09 00:56

    You don't set j ($t0) to zero before the loop.

    0 讨论(0)
  • 2021-02-09 01:03

    I also don't know what MIPS simulator you're running, but I know some of them don't constants and they demand you assign those to registers. So like bgt Rsrc1, Src2, label, normally if you put an integer in src2 the computer will translate that but I know for some you'll get an error doing add $v0, $t1, 3 as it won't translate add into addi. Same with mul. I know my SPIM simulator doesn't allow it.

    0 讨论(0)
  • 2021-02-09 01:11
    .data
    mensage: asciiz "Text Test"
    newline: asciiz "\n"
    .text
    
    # tmp = $v0
    # j = $t0
     
    main:
        li $t0,0
        li $t1,0
        li $t3,0
    loop:
        bgt $t0,15,exit
        addi $t0,$t0,1
        j loop
        mul $t1,$t1,2
        add $t3,$t1,3  
    exit:
        li $v10,0
        syscall
    
    0 讨论(0)
提交回复
热议问题