0

単純な C プログラムを IA32 に変換してから Y86 に音訳しましたが、Y86 を学習したばかりなので、理解できない、またはデバッグ方法がわからないというエラーが表示されます。エラーは次のとおりです。

Stopped in 1 steps at PC = 0x1.  Exception 'HLT', CC Z=1 S=0 O=0
Changes to registers:

Changes to memory:

プログラムは、i を 0 に初期化し、i が 5 以上になるまで for ループを実行し、毎回 i をインクリメントすることになっています。for ループ内で、j を i*2 に、k を j+1 に設定します。私のY86コードは次のとおりです。

main:
    irmovl  $0, %ebx
    jmp L2
    halt
L3:
    rrmovl  %ebx, %eax
    addl    %eax, %eax
    rrmovl  %eax, %ecx
    rrmovl  %ecx, %eax
    irmovl  $1, %esi
    addl    %esi, %eax
    rrmovl  %eax, %edx
    addl    %esi, %ebx
L2:
    irmovl $4, %edi
    subl  %edi, %ebx
    jle L3

私の問題を解決するのに役立つ場合は、音訳した C コードと IA32 コードを提供できます。本当に助けが必要です。

4

1 に答える 1