源到源编译器
编辑源到源编译器是一种翻译器,它获取以编程语言编写的程序的源代码作为其输入,并以相同或不同的编程语言生成等效的源代码。源到源翻译器在运行在大致相同抽象级别的编程语言之间进行转换,而传统编译器从更高级别的编程语言进行翻译到较低级别的编程语言。例如,源到源的翻译器可以将程序从Python翻译成JavaScript,而传统的编译器则将C等语言翻译成汇编程序或Java翻译成字节码。自动并行化编译器经常将高级语言程序作为输入,然后转换代码并使用并行代码注释(例如OpenMP)或语言结构(例如Fortran的forall语句)对其进行注释。
源到源编译的另一个目的是翻译遗留代码以使用下一个版本的底层编程语言或破坏向后兼容性的API。它将执行自动代码重构,这在要重构的程序不受原始实现者控制(例如,将程序从Python2转换为Python3,或将程序从旧API转换为新API)或当程序的大小使得手动重构它不切实际或耗时。
转编译器可以使翻译后的代码结构尽可能接近源代码,以简化原始源代码的开发和调试,或者可以改变原始代码的结构,使翻译后的代码看起来不像源代码。还有一些调试工具可以将转编译后的源代码映射回原始代码;例如,JavaScript源映射标准允许将Web浏览器执行的JavaScript代码映射回原始源,例如,当JavaScript代码由转编译为JavaScript的语言缩小或生成时。
汇编语言翻译器
编辑所谓的汇编语言翻译器是一类源到源翻译器,将代码从一种汇编语言转换为另一种,包括(但不限于)跨不同的处理器系列和系统平台。
英特尔CONV86
英特尔销售的16位处理器8086与8位处理器8080源兼容。为了支持这一点,英特尔有一个基于ISIS-II的从8080到8086源代码的翻译器,名为CONV86(也称为CONV-86和CONVERT86)自1978年以来提供给OEM客户,可能是此类最早的程序。它支持多级转换,并在8英寸英特尔微处理器开发系统MDS-800上以2MHz运行软盘驱动器。根据用户报告,它的工作不是很可靠。
SCPTRANS86
西雅图计算机产品公司(SCP)提供了TRANS86.COM,由TimPaterson于1980年在开发86-DOS时编写。该实用程序可以将Intel8080和ZilogZ80汇编源代码(使用Zilog/Mostek助记符)转换为Intel8086的.ASM源代码(格式仅与SCP的交叉汇编器ASM86兼容)CP/M-80),但仅支持操作码、寄存器和模式的子集,并且通常仍需要大量的手动更正和之后的返工。此外,仅执行音译,蛮力单通翻译器没有执行任何注册和跳转优化。它占用了大约24KB的RAM。TRANS86.COM的SCP版本1在基于Z80的系统上运行。一旦86-DOS运行,Paterson以一种受自托管启发的方法,利用TRANS86将自己转换为在86-DOS下运行的程序。编号版本2,它被命名为TRANS.COM。1982年晚些时候,翻译器显然也可以从Microsoft获得。
SorcimTRANS86
也称为TRANS86,Sorcim自1980年12月以来也提供8080到8086的转换器。与SCP的程序一样,它被设计用于移植CP/M-80应用程序代码(ASM、MAC、RMAC或ACT80汇编格式)到MS-DOS(以与ACT86兼容的格式)。在ACT80格式中,它还支持一些Z80助记符。翻译是在逐条指令的基础上进行的,并对条件跳转进行了一些优化。该程序在CP/M-80、MP/M-80和CromemcoDOS下运行,至少24KB的RAM,并且对源文件大小没有限制。
数字研究XLT86
1981年9月,DigitalResearch的XLT861.0更复杂,并且xxx个将优化编译器技术引入源代码翻译过程。XLT861.1于1982年4月推出。该程序由GaryKildall编写]并将Intel8080处理器的.ASM源代码(与ASM、MAC或RMAC汇编器兼容的格式)翻译成8086的.A86源代码(与ASM86兼容)。对8080寄存器使用情况使用全局数据流分析,五阶段多通翻译器还将针对代码大小优化输出并处理调用约定(CP/M-80BDOS调用被映射到CP/M-86的BDOS调用),以便CP/M-80和MP/M-80程序可以自动移植到CP/M-86和MP/M-86平台。
XLT86.COM本身是用PL/I-80为CP/M-80平台编写的。该程序为自己占用了30KB的RAM,另外还为程序图占用了额外的内存。在64KB内存系统上,支持的xxx源文件大小约为6KB,因此在翻译之前必须对较大的文件进行相应的分解。另外,XLT86也可用于DECVAX/VMS。虽然XLT86的输入和输出工作在源代码级别,但翻译程序在内存中的表示和应用的代码优化技术为二进制重新编译奠定了基础。
其他
自1979年以来,Zilog提供了Z80到Z8000转换器,作为其PDS8000开发系统的一部分。AdvancedMicroComputers(AMC)和2500ADSoftware也提供了Z80到Z8000的转换器。后者被命名为TRANS,可用于Z80CP/M、CP/M-86、MS-DOS和PCOS。
Z88DK开发套件提供了一个Z80到i486的源代码转换器,该转换器针对名为“to86.awk”的nasm,由StefanoBodrato于2008年编写。它又基于DouglasBeattie,Jr.在2003年编写的名为“toz80.awk”的8080到Z80转换器。
2021年,BrianCallahan为名为8088ify的nasm编写了一个8080CP/M2.2到MS-DOS源代码翻译器。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/131830/