Assembly 在哪里可以找到8080到x86汇编程序转换工具?

Assembly 在哪里可以找到8080到x86汇编程序转换工具?,assembly,x86,z80,retro-computing,Assembly,X86,Z80,Retro Computing,编辑,好消息 10年后,我决定我最终必须坐下来实现这一目标。我编写了必要的convert-8080-to-z80-or-x86和convert-z80-to-x86工具,将Sargon代码转换为x86代码,如下文所述增加了搜索深度,基本上实现了我的所有目标,请参阅 对于一个复古计算项目,我需要将20世纪70年代的8080汇编语言转换成x86形式。曾经有一段时间,一种用于实现这一点的工具是英特尔推出80x86系列的市场营销的关键部分。但我的谷歌搜索技能似乎无法胜任找到原始工具或类似工具的工作。有人

编辑,好消息

10年后,我决定我最终必须坐下来实现这一目标。我编写了必要的convert-8080-to-z80-or-x86和convert-z80-to-x86工具,将Sargon代码转换为x86代码,如下文所述增加了搜索深度,基本上实现了我的所有目标,请参阅

对于一个复古计算项目,我需要将20世纪70年代的8080汇编语言转换成x86形式。曾经有一段时间,一种用于实现这一点的工具是英特尔推出80x86系列的市场营销的关键部分。但我的谷歌搜索技能似乎无法胜任找到原始工具或类似工具的工作。有人知道这样的工具在哪里都有吗

编辑

我已经决定添加一些背景信息,以便更清楚地了解我要做的事情。这是为了一般的兴趣,也可能是为了梳理出更多的反馈

在之前的一个项目中,我研究了20世纪70年代的国际象棋程序Microches,在作者彼得·詹宁斯(Peter Jennings)的帮助下,它在当代机器上运行。Peter在他的网站上讲述了Microches的故事,并提供了6502汇编语言源代码。我的贡献现已添加到故事中,可在以下网址找到:

我处理这个项目的方法是用手最少地转换代码,使其与C语言语义相匹配,例如,我转换了这个

        LDY #$0F            ; CALCULATE
        LDA SQUARE          ; POINTS
ELOOP   CMP BK,Y            ; CAPTURED
        BEQ FOUN            ; BY THIS
        DEY                 ; MOVE
        BPL ELOOP
FOUN    LDA POINTS,Y        ;
对此,

        LDYi    (0x0F);     // CALCULATE
        LDA     (SQUARE);   // POINTS
ELOOP:  CMPx    (BK,Y);     // CAPTURED
        BEQ     (FOUN);     // BY THIS
        DEY;                // MOVE
        BPL     (ELOOP);
FOUN:   LDAf    (POINTS,Y);
我创建的C预处理器宏匹配所有需要的6502条指令,例如,LDYi()用(I)mmediate值加载模拟寄存器Y

一段时间后,我发现一个德国人安德烈·阿德里安(Andre Adrian)拿走了我的代码,并添加了一个界面,使代码能够从现代象棋GUI中驱动。很酷,我希望我能想到这一点。这可以在他的网站上看到

在同一个页面上(我使用谷歌翻译),他链接到另一个经典国际象棋程序Sargon的原始版本,可能是复古国际象棋经典,并表达了一个愿望,希望有人能像我对Microches所做的那样将这段代码带回到生活中(我想谷歌翻译就是这么说的)。好吧,我是来服务的!这次我不会忘记添加GUI界面,或者我会与Andre合作

萨尔贡汇编语言在这里

Andre删除了所有无关的内容,只留下了汇编语言代码

现在,情节变得复杂了。安德烈试图用模拟器让这些东西自己工作。(编辑2012年1月3日-安德烈将这一点向前推进了很多,现在你可以在现代PC上运行旧的萨尔贡代码-见下面他的答案和上面链接的网站)。但有一个复杂的问题我想他不明白。萨贡密码实际上是针对Z80的。但是汇编语言不是普通的Z80汇编语言,而是8080汇编语言,对于只支持Z80的指令,有着奇怪的英特尔式助记符。一些背景;Zilog Z80是Intel 8080的第三方后裔。它使用8080指令集的二进制兼容超集。Zilog决定为Z80提供一种更干净、更正交但完全不同(在源代码级别)的汇编语言。第三方(第四方?)显然认为这是一个错误的决定,并提出了另一种英特尔风格的Z80汇编程序,Z80扩展以类似英特尔的方式表达。或者他们只是使用现有8080汇编程序的宏功能添加了Z80扩展。没关系;复杂的是,Sargon代码使用了这个相当奇怪的混合汇编程序

我想要8080到x86的转换器,而不是模拟Z80或重复Microchess项目中的C宏方法,有几个原因

1) 这次有更多的代码。如果可能的话,我希望避免逐行编辑,即使这是一个最小的转换

2) 我希望这次代码能全速运行。在我看来,似乎我可以增加搜索深度,这是我用微型计算机无法做到的。国际象棋代码消耗CPU周期,它需要尽可能多的CPU周期,然后需要更多的CPU周期


3) 即使我有一个方便的仿真解决方案,我也需要将这些东西组装起来,这是一个考虑到奇怪的汇编程序惯例的问题。但是,如果我能将所有8080助记符翻译成x86,那么我就可以在x86环境中轻松地工作,只需手动翻译代码,你真的要翻译代码吗,还是只需要一个?甚至还有一个是用Javascript编写的

>P>有一个8080到8086个商用的翻译工具作为包的一部分。

< P>你可能想考虑一些替代方案。一种是将静态二进制翻译成C,如果将8080代码组装成二进制,这可能会更容易。看不到你的代码,你可能会有问题,因为这不是一对一的事情。8080中的资源或它所运行的板与您计划在其下运行代码的8086不匹配。如果您转换为C,那么您可以针对现在或现在的任何内容,而不限于模拟环境中的x86,以涵盖前面的问题。这并不像看上去那么可怕或痛苦…实际上很有趣

我一直在考虑做的一件事是,不翻译成C,而是翻译成llvm的字节码

编辑:

汇编器到汇编器的问题,除了有朝一日必须再次这样做之外,不是指令的功能(寄存器A=寄存器A+1),而是标志和条件分支(寄存器A=寄存器A+1,如果A=0 Z=1,否则Z=0,…)。基于您对8080和Z80的理解,您知道您必须找到或创建一个能够解析该汇编程序的工具。我的理论是,你更可能找到一个汇编到二进制的工具,而不是一个转换工具。从二进制开始,您可以模拟(以远大于全速的速度)或进行静态二进制转换,理想情况下转换为C。使用C,您可以成为sl
cpm ZASM_TDL sargon

cpm tdl-link sargon

cpm sargon