所以我正在使用coldfire(mcf5225x系列)并且我遇到了跳转编码的一些问题,在这种情况下它具有与68k相同的二进制表示。
asmtest.o: file format elf32-m68k
Disassembly of section .text:
00000000 <_start>:
0: 0682 0000 0040 addil #64,%d2
6: d481 addl %d1,%d2
8: 4efa 0008 jmp %pc@(12 <exit>)
c: 0682 ffff ffff addil #-1,%d2
00000012 <exit>:
12: d081 addl %d1,%d0
如您所见,jmp 指令的模式和寄存器为 111010,表示与 PC 的 16 位字扩展偏移量。16 位扩展是当前地址 8hex 的 8hex 偏移量。它应该导致 12 但是,我的数学表明我得到了 10。这里有什么问题,为什么似乎生成了错误的跳转地址?它在我正在设计的处理器模型中引起了一些问题。任何帮助将不胜感激!