【发布时间】:2018-03-16 20:07:39
【问题描述】:
这可以通过以下方式完成:
11 pop hl
10 push hl
在 21 个周期内。我发现的唯一替代方案是ex (sp),hl,它需要 19 个周期。缺点是,一旦我完成了内容,就必须将它们交换为原始值,所以在实践中,这种方法甚至比第一种方法更昂贵。
还有其他选择吗?
【问题讨论】:
-
我不相信您会在 Z80 上找到一种更快的机制来将堆栈顶部复制到 HL 并能够在没有更多指令的情况下将堆栈保持在当前状态。
-
好的。我可以忍受这一点。感谢您证实我的怀疑。
-
在 Z80 的某些变体上,例如游戏男孩,
LD HL, (SP+e) -
什么将值放入堆栈?不能直接写到内存吗? (进入
ld hl,NNNN 10t自我修改它)... 可能是值得的,特别是如果您读取该值的次数多于编写它的次数。 -
其实 'ld hl,(NN)' 在 Z80 上有一个优化版本。虽然可以是 ED6Bxxyy,但也可以是 2Axxyy,即 16t,3B。
标签: assembly stack micro-optimization z80