我将一个简单的 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,然后继续执行 for 循环,直到 i 大于或等于 5 并每次递增 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 代码,如果它可以帮助您回答我的问题,我真的需要一些帮助,谢谢。