gpt4 book ai didi

c - Y86 1 步停止异常 HLT

转载 作者:行者123 更新时间:2023-11-30 17:25:05 25 4
gpt4 key购买 nike

我将一个简单的 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代码,如果它可以帮助您回答我的问题,我真的需要一些帮助,谢谢。

最佳答案

您忘记在源文件中添加额外的 NL (CR)。 YAS 有缺陷。当它汇编时,如果源 (ys) 文件末尾没有 NL (CR),它会包装程序集,覆盖创建的目标代码 (yo) 文件的开头。

结果...嗯,很糟糕。在您的情况下,YAS 可能在目标文件的第一个字符中插入了 HLT 指令。

关于c - Y86 1 步停止异常 HLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27117428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com