単純な 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 コードを提供できます。本当に助けが必要です。