“未定义的行为”仅仅意味着 - 没有指明会发生什么。它可能导致CPU锁定,或者它可能实际执行指令。
有关M88K中使用的延迟槽的一些技巧,请参阅此文章:
http://www.pagetable.com/?p=313
或者答案可能更简单:您可能正在查看数据,而不是代码。由于原始二进制文件没有关于代码/数据边界的信息,因此objdump默认为反汇编所有内容,无论它是否有意义。
虽然这是未定义的行为,但是特定的CPU实现可能会对此指令序列执行一些有用且可重复的操作。要告诉的唯一方法是在实际实现上运行代码。使用调试器在每个分支的目标上放置一个断点,并查看您获得的断点。
这甚至可能是手动生成的程序集中的错误,因为代码的实际行为不正确,所以从未捕获过。