Assembly coldfire(MCF5225X)的交叉编译代码

Assembly coldfire(MCF5225X)的交叉编译代码,assembly,compiler-construction,compilation,cross-compiling,coldfire,Assembly,Compiler Construction,Compilation,Cross Compiling,Coldfire,我目前正在为coldfire V2体系结构构建一个处理器模型,但在测试它时遇到了一些问题,主要是因为我似乎无法编译任何coldfire代码。我发现的所有GNU交叉编译器的目标都是68k,这与coldfire体系结构不同(它们位于同一个通用系列中,但每个特定的ISA都是明确不同的,因此许多指令会抛出错误)。有人知道任何GNU工具链可以工作吗 GNU本身说它提供了针对这些体系结构的支持,但当我使用-march=5225标志时,它不起作用(只是说所有指令都未知)汇编ColdFire代码与GNU 68k

我目前正在为coldfire V2体系结构构建一个处理器模型,但在测试它时遇到了一些问题,主要是因为我似乎无法编译任何coldfire代码。我发现的所有GNU交叉编译器的目标都是68k,这与coldfire体系结构不同(它们位于同一个通用系列中,但每个特定的ISA都是明确不同的,因此许多指令会抛出错误)。有人知道任何GNU工具链可以工作吗


GNU本身说它提供了针对这些体系结构的支持,但当我使用-march=5225标志时,它不起作用(只是说所有指令都未知)

汇编ColdFire代码与GNU 68k汇编程序一起工作

首先,您可以查看ColdFire程序员参考手册,找出您使用的指令是在哪个版本的ISA(指令集体系结构)中提供的

如果随后使用
--help
开关运行GNU68K汇编程序,您将看到
-march
开关的参数列表,以指定所需的ISA。例如,
-march=isab
将选择ISA_B。ColdFire支持可能需要非古老版本的GNU汇编程序。我使用了binutils 2.22中的一个


请记住,某些68k指令在使用ColdFire ISA时可用的寻址模式较少。

5225
看起来像是与
-mcpu
一起使用,而不是
-march
。您是否尝试过指定ISA版本(例如,
-march=isac
)?我尝试过使用带有-march标志的ISA版本,但没有成功。我也试着将5225与mcpu一起使用,但GCC说这是一个不推荐使用的标志。它到底是在哪条指令上失败的?您使用的是哪个版本的GNUBinautils?我尝试使用binutils 2.22和
-march=isb
标志来组装一个包含
mvz.w
指令的文件(根据ColdFire程序员参考手册,该指令是在ISA_B中添加的),它似乎工作得很好。我有binutils 2.23,该文件只有一个简单的addi.l和add.l,这两个文件都抛出了一个错误“没有这样的指示“错误。您使用的是什么版本的GCC,您运行的确切命令是什么?我没有使用GCC。我直接使用了binutils 2.22中的
as
。我使用的命令只是
m68k elf as--march=isab-o test.o test.s
。您确定您使用的说明对ColdFire有效吗?例如,680x0上的
ADDI
允许目标操作数采用多种不同的寻址模式,但在ColdFire上,目标操作数只能是
D
-寄存器。