Я работаю над эмулятором Gameboy, и я достиг точки в ROM, где я получаю код 0xD1
(pop DE
off stack), но стек пуст (значения не были нажаты на него). Все неизвестные коды операций возвращают ошибку, и все остальные инструкции работают нормально. Так что же это делать? Это ошибка в моем программировании, ROM, или это просто быстрый способ для программы установить DE
на 0x0000
?Gameboy Emulator pop off empty stack
2
A
ответ
5
Даже если никакое значения не был PUSH
-й издом к стеке, POP
будет извлекать значение, хранящееся по адресу в SP
к указанным парам регистров, и SP
будет увеличен на 2
.
В вашем примере, если SP
инициализирован, скажем wD000
, и что WRAM инициализируется 0
заранее, POP DE
бы эффективно загрузить 0
к DE
, и приращение Stack Pointer
по 2
.
21 00 C0 ld hl,C000 ;Start of WRAM
01 FF 1F ld bc,1FFF ;Length of WRAM
AF xor a ;a = 0
22 ldi (hl),a ;Blanks WRAM
0B dec bc
78 ld a,b
B1 or c
20 F9 jr nz,0158 ;Loops until WRAM is cleared
21 00 D0 ld hl,D000
F9 ld sp,hl ;SP = 0xD000
D1 pop de ;de = 0x0000, SP = 0xD002
Кроме того, обратите внимание, что CALL
инструкция выталкивает адрес возврата в стек, и декрементирует SP
по 2
. Точно так же RET
извлекает адрес из стека и увеличивает SP
на 2
.
Смежные вопросы
- 1. GameBoy ISA (Пишем Emulator)
- 2. Stack Push и Pop
- 3. Stack push (pop() * pop()) описание
- 4. System.InvalidOperationException: Stack empty
- 5. Stack push pop rotate
- 6. pop view off программно
- 7. java stack - pop
- 8. Stack pop function
- 9. C# SocketAsyncEventArgsPool Stack Empty
- 10. Reboot/Power Off Android Emulator
- 11. Android TV Emulator Network Off
- 12. Pop selection off выпадающее меню
- 13. Pop Activity From Stack onResume
- 14. Stack <> ошибка Pop
- 15. Weirdest C++ stack empty() fault
- 16. XamlReader.Load (XmlReader) «Stack Empty» XamlParseException
- 17. Pop (char &) fcn from stack of char's
- 18. Эмуляция GameBoy Color's GameLink
- 19. tower of hanoi using stack - Empty Stack Exception
- 20. KeyError: «pop from the empty set» python
- 21. Двойная бесплатная ошибка Stack pop Внедрение
- 22. Python Stack без использования функции pop
- 23. Pop back stack без onresume под названием
- 24. Stack Pop loop не поп всех элементов
- 25. C++: скорость std :: stack :: pop() метод
- 26. JAVA Stack Pop Ошибка, пытаясь создать отмен
- 27. stack, push и pop in python
- 28. dropdownlist item selected throw exception (stack empty)
- 29. catching EmptyStackException vs. Testing is Stack is empty
- 30. Метод pop pop вызывает исключение нулевой указатель
Спасибо, ясный и лаконичный ответ, который решил мою проблему! – TheAbelo2