【问题标题】:68000, portable JIT library68000,可移植的 JIT 库
【发布时间】:2023-08-27 18:04:01
【问题描述】:

有几个 JIT 库,但是否有任何发出 Motorola 68000 样式指令的库,例如 68000、68040、68060 或任何 Coldfire CPU?

如果它也可以为其他平台发射奖励积分,但 68k 是最重要的。

首选易于与 C 集成的东西,但其他语言也很有趣。

理想情况下类似于libjit,但后端为 68k。

【问题讨论】:

  • @Jonas Elfström,用于遗传算法。
  • 用什么编程语言?
  • @Jonas Elfström,我不确定。也许是定制的。
  • “或更高”包括 ColdFire 血统或仅 680x0?
  • @Potatoswatter,ColdFire 也可以。

标签: c code-generation jit 68000


【解决方案1】:

虽然这并不能真正回答您的问题,但您可以考虑自己生成 68k 机器代码。如果您已经熟悉 68k 汇编,这应该不会太难。

Motorola M68000 Family Programmer's Reference Manual 记录了每条 680x0 指令的语法、可用性和位配置。然而,找出指令机器码的一种不那么繁琐的方法是使用 68k 汇编器,它可以为生成的每条指令生成十六进制代码的列表。如果你在 Windows 上,Easy68K 应该可以生成这样的列表,但我自己没有尝试过。

如果你不在 Windows 上,你可以试试this assembler(我认为只支持 68000)。你必须把它吹掉,但它可以工作(至少在 Linux 中)。命令行汇编器 (assembler/asm) 有一个 -l 标志,告诉汇编器生成一个列表。示例:

$ asmlab/汇编器/asm -ln test.asm PGM 68000 汇编器 未检测到错误 未生成警告

test.asm

每条指令前都需要前导空格,而汇编器不能很好地处理标记之间的空格。

move.l #$12345678,-(a6) 跳转 ($12345678) rts

test.LIS

00000000 2D3C 12345678 1 move.l #$12345678,-(a6) 00000006 4EF9 12345678 2 jmp ($12345678) 0000000C 4E75 3 rts 未检测到错误 未生成警告

【讨论】:

  • 我还发现 VASM 和 VBCC 很有前途。
  • 我目前正在尝试生成 68000 代码,发现 easy68k 非常适合测试生成的代码,它在每行旁边显示机器代码。