6502个指令时钟周期背后的逻辑是什么?

What is the logic behind 6502 instruction clock cycles?

6502 数据表第 10 页中需要考虑的一些问题:

http://archive.6502.org/datasheets/rockwell_r650x_r651x.pdf

关于 6502 条机器指令。指令地址被计算并存储为两个八位字节。在使用寄存器索引指令或分支指令的目标地址等进行地址计算时,可能存在从最低有效字节到最高有效字节的内部进位。这就是 'crossing a page boundary' 的意思——'page' 是 256 字节。内部进位过程可以施加一个周期的惩罚。

为了看得更清楚,如果你用十六进制编码你的地址,那么地址的低字节就是右边的两位数。例如地址 $1234 hex,低位字节将包含 $34 hex 和高位字节 $12。如果您从 'crosses the page boundary' 分支到或加载或存储的地址,通过将高位字节翻转一个,例如地址 $1300,则会产生周期惩罚。

如果分支是 'taken',则使用分支指令会添加一个循环,换句话说,满足条件并且程序跳转到新位置。所以如果分支碰巧进入另一个页面,那么实际上将添加 2 个循环。