对于复古计算项目,我需要将20世纪70年代8080汇编语言的主体翻译成x86形式.曾经有一段时间,这样做的工具是英特尔推出80x86系列市场营销的关键部分.但我的谷歌搜索技巧似乎不能找到原始工具或类似的东西.有谁知道这样的工具是否可以在任何地方使用?
编辑
我已经决定添加一些背景信息,以便更清楚我想要做的事情.这是为了普遍的兴趣,也可能是为了更多的反馈.
在之前的一个项目中,我看了20世纪70年代的国际象棋程序Microchess,在作者的祝福下,Peter Jennings在现代机器上运行.彼得在他的网站上讲述了Microchess的故事,并提供了6502汇编语言源.我的贡献现在已添加到故事中,可以在以下位置找到;
http://benlo.com/microchess/microchess9.html
我处理该项目的方法是手动对代码进行最低限度的转换,以便与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);
我创建了匹配所有6502指令的C预处理器宏,例如LDYi()使用(i)mmediate值加载模拟寄存器Y.
一段时间后,我发现一个德国人安德烈·阿德里安已经接受了我的代码,并添加了一个界面,使代码可以从现代国际象棋GUI中驱动.非常酷,我希望我能想到这一点.这可以在他的网站上看到;
http://www.andreadrian.de/schach/index.html
在同一页面上(我使用谷歌翻译),他链接到Sargon的原始版本,另一个经典的国际象棋程序,可能是复古的国际象棋经典,并表示希望有人将这个代码恢复生活,就像我做的那样Microchess(我认为无论如何谷歌翻译都是这样说的).好吧,好的,我来这里服务!这次我也不会忽视添加GUI界面,或者我可能会与Andre合作.
Sargon汇编语言在这里;
http://web.archive.org/web/20040217034933/madscientistroom.org/chm/Sargon.html
安德烈删除了一切无关的东西,只留下汇编语言代码;
http://www.andreadrian.de/schach/sargon.asm
现在,情节变浓了.安德烈试图使用模拟器让这些东西自己工作.(编辑3jan2012 - 安德烈已经向前推进了很多,现在您可以在现代PC上运行旧的Sargon代码 - 请参阅下面的答案和上面链接的网站).但是我认为他并不理解这种并发症.Sargon代码实际上是针对Z80的.但是汇编语言不是普通的Z80组装,而是8080汇编,只有英特尔风格的助记符只能用于Z80的说明.一些背景; Zilog Z80是Intel 8080的第三方后代.它使用8080指令集的二进制兼容超集.Zilog决定为Z80提供更清晰,更正交但完全不同(源级)的汇编语言.第三个(第四个?)派对明确认定这是一个糟糕的决定,并制作了另一个英特尔风格的Z80汇编程序,其中Z80扩展以英特尔的方式表达.或者他们可能只是使用现有8080汇编程序的宏功能添加了Z80扩展.没关系; 复杂的是Sargon代码使用了这个相当奇怪的混合汇编程序.
我想要一个8080到x86的翻译器有几个原因,而不是从我的Microchess项目中模拟Z80或重复C宏方法;
1)这次有更多的代码.如果可能的话,我想避免逐行编辑,即使它是一个最小的转换.
2)我希望这次代码全速运行.它看起来好像我可以增加搜索深度,这是我无法用Microchess做的事情.国际象棋代码占用CPU周期,它需要尽可能多的时间,然后需要更多.
3)即使我有一个方便的仿真解决方案,我需要得到这些东西来组装,这是一个奇怪的汇编程序约定的问题.但是,如果我可以将所有8080助记符翻译成x86,那么我可以在x86中轻松地工作,只需将<10%左右的Z80扩展行转换为等效的x86代码.
对不起这个漫无边际的帖子.希望至少有一个人会发现它很有趣.另一个要求; 我很想得到传奇的Sargon程序员Dan和Kathe Spracklen的祝福.但他们似乎根本没有网络存在.Dan Spracklen在LinkedIn上,但似乎是一个死的,没有反应的帐户.如果有人知道这些人或如何联系他们,请告诉我.