目錄
源到源編譯器
編輯源到源編譯器是一種翻譯器,它獲取以編程語言編寫的程序的源代碼作為其輸入,并以相同或不同的編程語言生成等效的源代碼。源到源翻譯器在運行在大致相同抽象級別的編程語言之間進行轉換,而傳統編譯器從更高級別的編程語言進行翻譯到較低級別的編程語言。例如,源到源的翻譯器可以將程序從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源代碼翻譯器。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/131830/