[英]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.