次の C コードを MIPS64 に変換する必要がありました。
#include <stdio.h>
int main() {
int x;
for (x=0;x<10;x++) {
}
return 0;
}
コードベンチを使用して、このコードを MIPS64 にクロスコンパイルしました。次のコードが作成されました。
.file 1 "loop.c"
.section .mdebug.abi32
.previous
.gnu_attribute 4, 1
.abicalls
.option pic0
.text
.align 2
.globl main
.set nomips16
.set nomicromips
.ent main
.type main, @function
main:
.frame $fp,24,$31 # vars= 8, regs= 1/0, args= 0, gp= 8
.mask 0x40000000,-4
.fmask 0x00000000,0
.set noreorder
.set nomacro
addiu $sp,$sp,-24
sw $fp,20($sp)
move $fp,$sp
sw $0,8($fp)
j $L2
nop
$L3:
lw $2,8($fp)
addiu $2,$2,1
sw $2,8($fp)
$L2:
lw $2,8($fp)
slt $2,$2,10
bne $2,$0,$L3
nop
move $2,$0
move $sp,$fp
lw $fp,20($sp)
addiu $sp,$sp,24
j $31
nop
.set macro
.set reorder
.end main
.size main, .-main
.ident "GCC: (Sourcery CodeBench 2012.03-81) 4.6.3"
コードが期待どおりに機能するかどうかを確認するために、私は通常、WINMIPS64 シミュレーターを使用します。何らかの理由で、このシミュレーターはこのコードを受け入れたくありません。コードのすべての行が間違っているようです。私はこの問題を1日以上見てきました。誰かがこれで私を助けてくれることを願っています。mips64 アーキテクチャ用のこのアセンブリ コードの何が問題になっていますか?