首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MIPS中读取数组

如何在MIPS中读取数组
EN

Stack Overflow用户
提问于 2014-02-16 05:54:51
回答 1查看 742关注 0票数 0

这是C语言中的代码:

代码语言:javascript
复制
while(a<10){
    M[a] = a + b;
    a++; }

如何用汇编语言在Mips中重写,并且不使用伪指令。M是由32位元素组成的数组。A在寄存器$s0中,b在$s1中,$s2是M数组的基址。

我的密码是:

代码语言:javascript
复制
      addi $s3, $zero, 10
LOOP: add $st1, $s0, $s1
      add $t2, $s2, $s0
      sw $t1, 0($s2)
      addi $s0, $s0, 1
      bne $s0, $s3, LOOP

但我觉得有问题。非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 14:10:42

如果我使用这个C程序并将它编译成MIPS程序集:

代码语言:javascript
复制
int main() {

int b = 10;
int a = 20;
int M[20];

while(a<10){
    M[a] = a + b;
    a++; }
}

然后,使用我的工具链,MIPS程序集变成:

代码语言:javascript
复制
    .file   1 "Cprogram.c"

 # -G value = 8, Cpu = 3000, ISA = 1
 # GNU C version cygnus-2.7.2-970404 (mips-mips-ecoff) compiled by GNU C version cygnus-2.7.2-970404.
 # options passed:  -msoft-float
 # options enabled:  -fpeephole -ffunction-cse -fkeep-static-consts
 # -fpcc-struct-return -fcommon -fverbose-asm -fgnu-linker -msoft-float
 # -meb -mcpu=3000

gcc2_compiled.:
__gnu_compiled_c:
    .text
    .align  2
    .globl  main
    .ent    main
main:
    .frame  $fp,112,$31     # vars= 88, regs= 2/0, args= 16, extra= 0
    .mask   0xc0000000,-4
    .fmask  0x00000000,0
    subu    $sp,$sp,112
    sw  $31,108($sp)
    sw  $fp,104($sp)
    move    $fp,$sp
    jal __main
    li  $2,10           # 0x0000000a
    sw  $2,16($fp)
    li  $2,20           # 0x00000014
    sw  $2,20($fp)
$L2:
    lw  $2,20($fp)
    slt $3,$2,10
    bne $3,$0,$L4
    j   $L3
$L4:
    lw  $2,20($fp)
    move    $3,$2
    sll $2,$3,2
    addu    $4,$fp,16
    addu    $3,$2,$4
    addu    $2,$3,8
    lw  $3,20($fp)
    lw  $4,16($fp)
    addu    $3,$3,$4
    sw  $3,0($2)
    lw  $2,20($fp)
    addu    $3,$2,1
    sw  $3,20($fp)
    j   $L2
$L3:
$L1:
    move    $sp,$fp         # sp not trusted here
    lw  $31,108($sp)
    lw  $fp,104($sp)
    addu    $sp,$sp,112
    j   $31
    .end    main
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21807870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档