首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS -帮助从C++转换代码

MIPS -帮助从C++转换代码
EN

Stack Overflow用户
提问于 2011-03-28 19:42:25
回答 2查看 995关注 0票数 0

我是MIPS的初学者,我正在尝试编写一个简单的代码,它在内存中的给定数组上运行,小于10个单元格,比如说9个单元格,并在屏幕上打印最大的数字。

我写了一个C代码来解决这个问题,但是我不知道如何将它(没有mips的gcc)转换成一个可以工作的MIPS汇编代码。

我写的代码:

代码语言:javascript
复制
int N = 9 , i = 0 , biggest = 0 ;
int arr [N] = -2 , 3 , 9 , -1 , 5 , 6 , 10 , 52 , 9 ;

while ( i <= N )
{
    if ( arr [i] > biggest )
        biggest = arr [i] ;

    i++ ;
}

printf ( "biggest number is: %d" , biggest ) ;

如果有人能用MIPS汇编语言编写代码,并向我解释,我会非常高兴。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-03-28 20:59:43

只关注循环,试着这样做:

代码语言:javascript
复制
   .text
   .set noreorder
   .global get_max
get_max:
   li    $4, array               // start pointer
   li    $5, array_end-array-4   // end pointer
   li    $2, 0                   // 'biggest' as result
   lw    $6, 0($4)               // load first table entry
1: slt   $3, $2, $6              // boolean flag (biggest<arr[i])
   movn  $2, $6, $3              // update 'biggest' when flag is set
   lw    $6, 4($4)               // load next table entry
   bne   $4, $5, 1b              // continue until we hit end of array
   addiu $4, 4                   // advance to next cell (using bne delay slot)
   jr    $31                     // return to the caller
   nop                           // safely fill the delay slot

           .data
array:     .long -2 , 3 , 9 , -1 , 5 , 6 , 10 , 52 , 9 
array_end: .long 0

将其编译成一个单独的汇编源文件,并与您的主C代码链接。

别忘了从你的C代码中调用函数:

代码语言:javascript
复制
printf("biggest=%d\n",get_max());
票数 0
EN

Stack Overflow用户

发布于 2012-04-25 22:34:54

你的初始化有问题...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5458458

复制
相关文章

相似问题

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