Как правильно управлять стеком при использовании PEA?
Последние пару недель я медленно изучал 65816, и, полагаю, меня ждут несколько бомб замедленного действия, если я сейчас не устраню это в зародыше.
Пример макроса: (я знаю, что это сбивает регистры вызывающего абонента, и это нормально)
.macro WriteText text, vram_dest, font_tile_id
rep #$30 ; A/X/Y 16-bit
lda #font_tile_id
pha
pea text
lda vram_dest
pha
jsr WriteText_SR
rep #$30
;?? Implement proper pulls to restore stack
.endmacro
Я знаю когда я
pha
, Мне нужно использовать тот же режим 8/16 бит, который я использовал, но я не уверен, что я должен делать, когда дело доходит до
pea
. Поскольку это «эффективный адрес push» и не связан с регистром, как мне восстанавливать стек? В настоящее время мой стек постепенно увеличивается, и я ожидаю, что он со временем разнесет все больше коллов, которые я делаю.
Я не видел 16-битного кода операции извлечения, который не касается регистров, я должен просто использовать
pla
,
plx
,
ply
и пусть это установит реестр?