|
|
1
4
http://www.arrakis.es/~ninsesabe/pasmo/ “从0.5.0版开始,还可以从Z80源生成8086代码,Ms dos COM文件的二进制格式或CP/M 86 CMD格式。” Pasmo 0.6:“现在可以汇编8080代码,或者与Z80混合。” |
|
|
2
4
Sargon源代码现在在CP/M模拟器上运行。 Here is the source ported from Wavemate Jupiter III to CP/M A CPM emulator is available here 要组装源代码,需要TDL ZASM和TDL链接器。 They are available here. 在MS Windows控制台窗口中创建Sargon的命令有:
|
|
|
3
3
你真的要翻译代码吗,还是 emulator 足够甚至还有一个是用Javascript编写的! |
|
|
4
3
你可能想考虑一些替代方案。一种是将静态二进制翻译成C,如果将8080代码组装成二进制,这可能会更容易。没有看到你的代码,你可能会有问题,因为这不是一对一的事情。8080中的资源或它运行的主板与您计划在其下运行代码的8086不匹配。如果你翻译成C,那么你可以针对现在或现在的任何事情,而不局限于模拟环境中的x86来解决之前的问题。这并不像看上去那么可怕或痛苦。。。其实很有趣。 我一直在考虑做的一件事是,不要翻译成C,而是翻译成llvm的字节码。 编辑: 汇编器到汇编器的问题,除了有朝一日必须再次这样做之外,不是指令的功能(寄存器A=寄存器A+1),而是标志和条件分支(寄存器A=寄存器A+1,如果A=0 Z=1,否则Z=0,…)。基于你对8080和Z80的理解,你知道你必须找到或创建一个可以解析汇编程序的工具。我的理论是,比起转换工具,你更可能找到一个汇编到二进制的工具。从二进制开始,你可以进行模拟(以远高于全速的速度)或进行静态二进制翻译,最好是到C。使用C,你可以变得马虎,你可以让每条指令都有代码来更新标志,然后C编译器中的优化器可以删除死代码。这是汇编程序不会做的事情,直接转到x86会给您留下大量未使用的指令。我没有阅读手册或太多的代码,所以它可能很容易处理,但除了个别说明,还有堆栈、内存、寄存器和用户界面的问题。如果要使用图形/视频接口,则必须大量替换该代码,如果堆栈在8080和x86之间变化,则必须处理该问题,并且可能需要处理硬编码的内存地址。硬编码的比较容易,计算的比较难,跳转表等等。堆栈用于参数传递和调用的方式在处理器之间可能有所不同,作者可能会以不将指令转换为指令的方式进行堆栈清理。这些都是我在进行汇编程序到汇编程序的翻译时遇到的问题,假设它不是从祖辈处理器到孙辈处理器,比如8080到x86。我又踢又叫,但最终发现,至少在我看来,C的翻译涵盖了这么多这样的问题。 我敢打赌,根据你所说的8080与z80的不同之处,你可能必须编写自己的汇编解析器。在这里,当你开始思考有多少指令,有多少变化时,汇编程序或静态翻译的任务似乎是不可能的巨大。但是,一旦你进入它的研磨通过说明不是那么糟糕。 我知道我的答案与问题没有直接联系,问题是我在哪里可以找到这个工具。我的答案是:如果你找不到工具,那么。如果你找到了工具,那就好了。如果你找到了一个可以让你靠近的工具,你可以从那里手动或编程调整。因为我以前做过几次,我知道完整的翻译可以是一个有趣的项目,特别是如果复古项目是一个你足够关心的项目,可以迁移到现在。 |
|
|
5
3
琐事:8086指令集是专门为方便从8080翻译而设计的。例如,这就是SAHF/LAHF指令的起源。 |
|
|
6
1
似乎有一个商业8080至8086翻译作为一个包的一部分 here . |
|
|
7
1
你能把Z80源代码组装成二进制吗?如果是这样,那么在二进制文件上运行一个反汇编程序,回到“正常”的Z80汇编程序。 |