0
我把一個簡單的c程序翻譯成IA32,然後將它轉譯成Y86,但是我收到一個錯誤,我不明白或知道如何調試,因爲我只是學習Y86。錯誤是:Y86停止1步異常HLT
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,並且每個時間增量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代碼,我從音譯如果它會幫你回答我的問題,我真的需要一些幫助的感謝。
輸出看起來很奇怪,但我猜你的代碼只是在最後一行的'jle'之後掉進未初始化的內存......你不是在那裏丟失什麼嗎? – Jester 2014-11-25 01:57:46
在主程序結束時停止應該停止程序,但這兩種方法都無關緊要,因爲它只執行第一行 – user3369628 2014-11-25 02:21:22