c/c++语言开发共享这个C程序的MIPS程序集转换如何?

我有一个关于Comp Sci类的简单问题,我正在将我的任务转换为MIPS汇编语言。 我相信我有一个正确的答案,但我想validation它。

这是C函数

int strlen(char *s) { int len; len=0; while(*s != '') { len++; s++; } return len; } 

谢谢!

 strlen: add $v0, $zero, $zero loop: lbu $t0, 0($a0) addi $a0, $a0, 1 addi $v0, $v0, 1 bne $t0, $zero, loop s_end: addi $v0, $v0, -1 j $ra 

    是的,你有一个正确的asm版本,我喜欢你在测试t0的值之前做了尽可能多的工作,以便尽可能多地从内存加载。

    我认为在s = 0的情况下,while循环是不正确的。它应该是这样的:

      ... lbu $t0, 0($a0) loop: beq $t0, $zero, s_end # * ... b loop s_end: ... 

    *您可以使用宏指令(beqz $ t0,s_end)而不是beq指令。

      以上就是c/c++开发分享这个C程序的MIPS程序集转换如何?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522450.html

      (0)
      上一篇 2020年12月10日
      下一篇 2020年12月10日

      精彩推荐