MIPS汇编的问题
- .text_rom:90015290 addiu $sp, -0x10
- .text_rom:90015294 sw $fp, 0x10+var_8($sp)
- .text_rom:90015298 move $fp, $sp
- .text_rom:9001529C sw $a0, 0x10+arg_0($fp)
- .text_rom:900152A0 sw $a1, 0x10+arg_4($fp)
- .text_rom:900152A4 lw $v0, 0x10+arg_0($fp)
- .text_rom:900152A8 bnez $v0, loc_900152BC
复制代码
生成上面的汇编是不是编译器的bug?load delay slot里面怎么能立即使用$v0寄存器?
我用
-march=mips32 -mtune=r4600 -mabi=32 -G 0 -ansi -fno-builtin -fdelayed-branch -fthread-jumps -fno-pic -mno-abicalls -O0 -g -fschedule-insns2 -msoft-float
[]# mipsel-linux-uclibc-gcc -v
Using built-in specs.
Target: mipsel-linux-uclibc
Configured with: xxxx/gcc-4.1.2/configure --prefix xxxxx --build=i386-redhat-linux --host=i386-redhat-linux --target=mipsel-linux-uclibc --enable-languages=c,c++ --enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls
Thread model: posix
gcc version 4.1.2
汇编回应的源码是
- int strcmp(const char *cs, const char *ct)
- {
- if(!cs) return -1;
- if(!ct) return 1;
- while (*cs || *ct)
- if (*cs++ != *ct++)
- return (*--cs - *--ct);
- return 0;
- }
复制代码
[ 本帖最后由 mjdcl 于 2007-7-10 14:47 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
-mtune=r4600
R4K有互锁机制,不用填充nop。