繁体   English   中英

M68K:同一个寄存器的预减量

[英]M68K: predecrement on the same register

在 M68040 asm 中,给出:

mov.l #0x1000, %a0
mov.l -(%a0), -(%a0)

第二个mov之后的%a0值是多少? 寄存器减少了两次还是一次?

什么不是mov.l我们使用少数其他同时支持源和目标的预递减/后递增的指令之一?

MC68040 UM 声明move16 (%an)+, (%an)+仅执行单个增量,但我找不到有关一般情况的任何信息。

我正在使用模拟器并且没有实际的 CPU。 此外,网上普遍的共识似乎是Easy68k在处理这种极端情况时是不可信的。

在您的具体示例中,

  move.w -(an),-(an)

在真正的 68000 CPU 上,寄存器an确实递减了两次(因此,在指令之后,它递减 4 - 或者,在你的.l 示例中,递减 8)。 该指令有效地将 memory 内容向下移动一个字长(在真实硬件上验证)。

move16 是一个完全不同的野兽,仅在 68040 上可用。 我想move16指令的具体行为是由68040缓存机制引起的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM