Content deleted Content added
Altered template type. Add: chapter-url, chapter, title. Removed or converted URL. | Use this tool. Report bugs. | #UCB_Gadget |
|||
(15 intermediate revisions by 13 users not shown) | |||
Line 5:
{{Program execution}}
{{Data transformation}}
A '''source-to-source translator''', '''source-to-source compiler''' ('''S2S compiler'''), '''transcompiler''', or '''transpiler'''<ref name="ARC_1988_Transpiler"/><ref name="Pountain_1989"/><ref name="Sector7_1993_Transpiler"/> is a type of [[
Another purpose of source-to-source-compiling is translating legacy code to use the next version of the underlying programming language or an application programming interface ([[API]]) that breaks backward compatibility. It will perform automatic [[code refactoring]] which is useful when the programs to refactor are outside the control of the original implementer (for example, converting programs from Python 2 to Python 3, or converting programs from an old API to the new API) or when the size of the program makes it impractical or time-consuming to refactor it by hand.
Transcompilers may either keep translated code structure as close to the source code as possible to ease development and [[debugging]] of the original source code or may change the structure of the original code so much that the translated code does not look like the source code.<ref name="Fowler_2013"/> There are also debugging utilities that map the transcompiled source code back to the original code; for example, the [[JavaScript]] Source Map standard{{Citation needed|reason=Not a standard|date=September 2020}} allows mapping of the JavaScript code executed by a [[web browser]] back to the original source when the JavaScript code was, for example, minified or produced by a transcompiled-to-JavaScript language.{{Citation needed|date=September 2020}}
Line 27:
=== Digital Research XLT86 ===
{{anchor|XLT86}}Much more sophisticated and the first to introduce [[optimizing compiler]] technologies into the source translation process was [[Digital Research]]'s XLT86 1.0 in September 1981. XLT86 1.1 was available by April 1982<!-- possibly earlier -->.<ref name="Barry_1982_XLT86"/> The program was written by [[Gary Kildall]]<ref name="Freiberger_1981_Translators"/><ref name="Swaine_1982_CPM"/><ref name="Bunnell_1982_CPM"/><ref name="Laws_2014_IEEE"/> and translated {{Not a typo|.ASM}} source code for the Intel 8080 processor (in a format compatible with ASM, MAC or RMAC assemblers) into {{Not a typo|[[A86 (software)|.A86]]}} source code for the 8086 (compatible with ASM86). Using [[global data flow analysis]] on 8080 register usage,<ref name="Digital_Research_1981_News"/><ref name="Freiberger_1981_Translators"/><ref name="Kildall_1973_Optimization"/><ref name="Kildall_1972_Optimization"/> the five-phase [[multi-pass compiler|multi-pass]] translator would also optimize the output for code size and take care of calling conventions (CP/M-80 [[BDOS]] calls were mapped into BDOS calls for [[CP/M-86]]), so that CP/M-80 and MP/M-80 programs could be ported to the CP/M-86 and [[MP/M-86]] platforms automatically. XLT86.COM itself was written in [[PL/I-80]] for CP/M-80 platforms.<ref name="XLT86_1981"/><ref name="Taylor_1982_Translators"/><ref name="Barry_1982_XLT86"/><ref name="Digital_Research_XLT86"/> The program occupied 30 KB of RAM for itself plus additional memory for the [[control-flow graph|program graph]]. On a 64 KB memory system, the maximum source file size supported was about 6 KB,<ref name="XLT86_1981"/><ref name="Taylor_1982_Translators"/><ref name="Goldfarb_1982"/><ref name="Barry_1982_XLT86"/> so that larger files had to be broken down accordingly before translation.<ref name="Taylor_1982_Translators"/><ref name="Barry_1982_XLT86"/> Alternatively, XLT86 was also available for [[Digital Equipment Corporation|DEC]] [[VAX/VMS]].<ref name="Taylor_1982_Translators"/><ref name="Barry_1982_XLT86"/> Although XLT86's input and output worked on source-code level, the translator's in-memory representation of the program and the applied code optimizing technologies set the foundation to [[binary recompilation]].<ref name="Wharton_1994"/><ref name="SPA_1995"/><ref name="Swaine_1997"/>
=== Others ===
Line 49:
|-
|[[Babel (transpiler)|Babel]]
|[[ECMAScript
|ES5
|
Line 59:
|-
|[[Cfront]]
|[[C++]]
|[[C (programming language)|C]]
|
Line 65:
|[[ClojureScript]]
|[[Clojure]]
|JavaScript
|
|-
|[[CoffeeScript]]
|[[CoffeeScript]]
|JavaScript
|
Line 70 ⟶ 75:
|[https://dafny.org Dafny]
|[[Dafny (programming language)|Dafny]]
|C#, [[JavaScript
|
|-
Line 80 ⟶ 85:
|h5<ref name="Olivenbaum"/>
|[[C Sharp (programming language)|C#]]
|JavaScript
|
|-
|[[Eiffel (programming language)|Eiffel]], via [[EiffelStudio]]
|Eiffel
|C, [[Common Intermediate Language]]
|
|-
|[[Elm_(programming_language)|Elm]]
|[[Elm]]
|JavaScript
|
Line 88 ⟶ 103:
|
|-
|[[HipHop for PHP
|[[PHP]]
|C++
Line 116 ⟶ 131:
|[[Rust (programming language)|Rust]]
|C
|Experimental compiler
|-
|[https://nim-lang.org/ Nim]
|[[Nim (programming language)|Nim]]
|C, C++, [[Objective-C]], JavaScript
|
|-
|[[PureScript]]
|[[PureScript]]
|JavaScript
|
|-
|[[Reason_(programming_language)|ReasonML]]
|[[Reason]]
|JavaScript
|
|-
|[https://rescript-lang.org/ ReScript]
|[[OCaml]]
|JavaScript
|
|-
|[[Sather]]
|Sather
|C
|
|-
|-
|[[Scala (programming language)#Other_compilers_and_targets|Scala.js]]
|[[Scala (programming language)|Scala]]
|JavaScript
|
Line 131 ⟶ 167:
|[[Objective-C]]
|[[Swift (programming language)|Swift]]
|
|-
|[[V (programming language)|V]]
|V
|C
|
|-
|[[Vala (programming language)|Vala]]
|Vala
|C
|
|-
|[[Visual Eiffel]]
|[[Eiffel (programming language)|Eiffel]]
|C
|
Line 150 ⟶ 196:
== Porting a codebase ==
When developers want to switch to a different language while retaining most of an existing codebase, it might be better to use a transcompiler compared to rewriting the whole software by hand. Depending on the quality of the transcompiler, the code may or may not need manual intervention in order to work properly. This is different from "transcompiled languages" where the specifications demand that the output source code always works without modification. All transcompilers used to [[software port|port]] a codebase will expect manual adjustment of the output source code if there is a need to achieve maximum code quality in terms of readability and platform convention.
{| class="wikitable collapsible"
Line 171 ⟶ 217:
|-
| C2Eif<ref name="C2EIF"/> || [[C (programming language)|C]] || [[Eiffel (programming language)|Eiffel]] || The resulting Eiffel code has classes and structures that try to be as clean as possible. The tool is complete and relies on embedding the C and assembly code if it cannot translate it properly.
|-
|Skip<ref name="Skip"/>
|[[Swift (programming language)|Swift]]
|[[Kotlin (programming language)|Kotlin]]
| Skip is an Xcode plug-in that transpiles a Swift iOS app or library using SwiftUI into equivalent native Kotlin code for Android using Jetpack Compose.
|-
| Swiftify<ref name="Swiftify_Objective-C"/> || [[Objective-C]] || [[Swift (programming language)|Swift]] || Swiftify is an online source to source conversion tool from Objective-C into Swift. It assists developers who are migrating all or part of their iOS codebase into Swift. The conversion is aimed primarily at converting the syntax between Objective-C and Swift, and is helped because Apple took efforts to ensure compatibility between Swift and Objective-C runtimes.
Line 181 ⟶ 232:
A transcompiler pipeline is what results from ''recursive transcompiling''. By stringing together multiple layers of tech, with a transcompile step between each layer, technology can be repeatedly transformed, effectively creating a distributed [[Language-independent specification|language independent specification]].
[[XSLT]] is a general-purpose transform tool that can be used between many different technologies, to create such a [[derivative code]] pipeline.<ref name="W3C_XSLT2">World Wide Web Consortium (W3C). "XSL Transformations (XSLT) Version 2.0". https://www.w3.org/TR/xslt-20/</ref>
=== Recursive transcompiling ===
Line 232 ⟶ 283:
<ref name="Scanlon_1988">{{cite book |title=8086/8088/80286 assembly language |author-last=Scanlon |author-first=Leo J. |date=1988 |publisher=Brady Books |isbn=978-0-13-246919-7 |page=[https://archive.org/details/8086808880286ass0000scan/page/12 12] |url=https://archive.org/details/8086808880286ass0000scan/page/12 |quote=[…] The [[8086]] is software-compatible with the [[8080]] at the assembly-language level. […]}}</ref>
<ref name="Kildall_1972_Optimization">{{Cite book |title=Global expression optimization during compilation |author-first=Gary Arlen |author-last=Kildall |author-link=Gary Arlen Kildall |type=Ph.D. dissertation |publisher=[[University of Washington]], Computer Science Group |___location=Seattle, Washington, USA |date=May 1972 |id=Thesis No. 20506, Technical Report No. 72-06-02}}</ref>
<ref name="Kildall_1973_Optimization">{{Cite
<ref name="XLT86_1981">{{cite book |date=September 1981 |title=XLT86 – 8080 to 8086 Assembly Language Translator – User's Guide |edition=First printing |publisher=[[Digital Research, Inc.]] |___location=Pacific Grove, California, USA |url=http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf |access-date=2016-11-18 |url-status=live |archive-url=https://web.archive.org/web/20161118230700/http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf |archive-date=2016-11-18|id=[https://archive.org/stream/bitsavers_digitalResuideSep81_2620625/XLT86_Users_Guide_Sep81_djvu.txt archive.org copy]}}</ref>
<ref name="Digital_Research_1981_News">{{cite magazine |title=XLT86 Reduces Conversion Effort in Assembly Language Program Translation |series=Product Update |magazine=Digital Research News – for Digital Research Users Everywhere |publisher=[[Digital Research, Inc.]] |___location=Pacific Grove, California, USA |date=November 1981 |volume=1 |number=1 |id=Fourth Quarter |pages=2, 7 |url=https://amaus.net/static/S100/software/DRI/Digital%20Research%20News/01x01%201981%20Digital%20Research%20News.pdf |archive-url=https://web.archive.org/web/20211110124333/https://amaus.net/static/S100/software/DRI/Digital%20Research%20News/01x01%201981%20Digital%20Research%20News.pdf |url-status=usurped |archive-date=10 November 2021 |access-date=2020-01-18 |quote=[…] An 8- to 16-bit assembly code translator is now available from [[Digital Research]]. Called XLT86, it is designed to help ease the time-consuming process of converting [[CP/M]] software products from [[8080]]- to [[8086]]-based microcomputers. XLT86 can be used to translate any assembly language programs that are compatible with Digital Research's ASM, MAC or RMAC assembler format. The XLT86 program translator first reads an 8080 assembly language program and then produces an output file containing 8086 assembly language statements acceptable to the Digital Research ASM-86 assembler. Unlike other 8086 code converters that translate a single 8080 instruction into as many as ten 8086 instructions, XLT86 performs extensive [[data flow analysis]] to determine register usage throughout the original program. The information collected through this analysis is used during program translation to eliminate unnecessary flag save and restore operations. "The resulting 8086 program is both simpler and more compact than equivalent programs produced by other translators," according to Curt Geske, of the Digital Research marketing group. "Furthermore, XLT86 allows OEMs, end users and software vendors to preserve their investment in 8080-based assembly language programs when changing to 16-bit 8086-based computers by reducing the conversion effort." Programs translated by XLT86 run on both [[CP/M-86]] and [[MP/M-86]] […] XLT86 is available immediately. It operates on any 8-bit CP/M or [[MP/M]] system, or under the [[OpenVMS|VMS]] operating-system for use on [[Digital Equipment Corporation]] [[DEC VAX|VAX]] series [[
<ref name="Digital_Research_XLT86">{{cite web |title=XLT86 for CP/M-80 |publisher=[[Digital Research]] |url=http://www.cpm.z80.de/download/xlt86.zip |access-date=2020-01-18 |url-status=live |archive-url=https://web.archive.org/web/20200116055650/http://www.cpm.z80.de/download/xlt86.zip |archive-date=2020-01-16}} (NB. This ZIP archive contains the [[CP/M-80]] executable XLT86.COM [22 KB] as well as two overlay files XLT00.OVL [8 KB] and XLT01.OVL [9 KB].)<!-- This has officially been released as free software by Caldera/Lineo. --></ref>
<ref name="SCP_1980_86-DOS">{{cite book |date=1980 |title=86-DOS – Disk Operating System for the 8086. User's manual |version=Version 0.3 |edition=Preliminary |publisher=[[Seattle Computer Products]] |___location=Seattle, Washington, USA |url=http://www.patersontech.com/dos/Docs/86_Dos_usr_03.pdf |access-date=2020-02-01 |url-status=live |archive-url=https://web.archive.org/web/20190714004434/http://www.patersontech.com/dos/docs/86_Dos_usr_03.pdf |archive-date=2019-07-14}}</ref>
<ref name="SCP_86-DOS">{{cite book |date=1980 |title=SCP 86-DOS – Single-User Disk Operating System for the 8086 |edition=Preliminary |publisher=[[Seattle Computer Products]] |___location=Seattle, Washington, USA |url=https://archive.org/stream/bitsavers_seattleCominary_1042322/SCP_86-DOS_Preliminary_djvu.txt |access-date=2020-01-18 |quote=[…] The source code translator can translate most [[Z80]] source code into [[8086]] source code acceptable to the assembler after minor manual correction. This provides a relatively quick and easy way to transport programs between the processors. […] TRANS file […] The Z80-to-8086 Source Code Translator, called by this command, is essentially identical to our version that runs on the Z80, which is described in the back of the Assembler manual. The only differences: 1. The Translator is called TRANS, not TRANS86, and it runs on the 8086 under [[86-DOS]], not on the Z80 under [[CP/M]]. 2. The extension of the output file is "ASM", not "A86". […]}} [https://archive.org/details/bitsavers_seattleCominary_1042322]</ref>
<ref name="SCP_Cross">{{cite book |title=Z80/8086 Cross Assembler Release 1 |chapter=Z80 To 8086 Translator |date=<!-- possibly 1980, but needs verification --> |version=Revision A |edition=Preliminary |publisher=[[Seattle Computer Products]] |___location=Seattle, Washington, USA |pages=20–21<!-- actually an unnumbered addendum page following page 19 --> |url=https://amaus.net/static/S100/seattle%20computer%20products/software/SCP%20Z80%208086%20cross%20assembler.pdf |archive-url=https://web.archive.org/web/20211130181326/https://amaus.net/static/S100/seattle%20computer%20products/software/SCP%20Z80%208086%20cross%20assembler.pdf |url-status=usurped |archive-date=30 November 2021 |access-date=2020-01-18 |quote=[…] The [[Seattle Computer Products]] [[Z80]] to [[8086]] Translator runs on the Z80 under [[CP/M]]. It accepts as input a Z80 source file written using [[Zilog]]/[[Mostek]] mnemonics and converts it to an 8086 source file in a format acceptable to our 8086 Cross Assembler. To translate a file, simply type TRANS86 <filename>.<ext>. Regardless of the original extension, the output file will be named <filename>.A86 and will appear on the same drive as the input file. A file named TRNTEST.Z80 is included to demonstrate the translator. The entire Z80 assembly language is not translated. […]}} [https://archive.org/details/bitsavers_seattleComsemblerPreliminary_611077]</ref>
<ref name="SCP_TRANS">{{cite book |title=Z80 To 8086 Translator |publisher=[[Seattle Computer Products]] |date=<!-- probably 1980 --> |pages=((TRANS{{hyphen}}1{{ndash}}TRANS{{hyphen}}2)) |url=https://amaus.net/static/S100/seattle%20computer%20products/software/SCP%20Z80%20to%208086%20translator.pdf |archive-url=https://web.archive.org/web/20211130171816/https://amaus.net/static/S100/seattle%20computer%20products/software/SCP%20Z80%20to%208086%20translator.pdf |url-status=usurped |archive-date=30 November 2021 |access-date=2020-01-19 }} (23 pages)</ref>
<ref name="Paterson_2014_MSDOS125">{{cite web |author-first1=Tim
|author-last1=Paterson |author-link1=Tim Paterson |title=Microsoft DOS V1.1 and V2.0: Z80 to 8086 Translator version 2.21 /msdos/v11source/TRANS.ASM |publisher=[[Computer History Museum]], [[Microsoft]] |date=2013-12-19<!-- 2014-03-25 --> |orig-date=1982-07-01 |url=http://www.computerhistory.org/atchm/microsoft-research-license-agreement-msdos-v1-1-v2-0/ |access-date=2014-03-25 |url-status=live |archive-url=https://web.archive.org/web/20191112060745/https://computerhistory.org/blogs/microsoft-research-license-agreement-msdos-v1-1-v2-0/?key=microsoft-research-license-agreement-msdos-v1-1-v2-0 |archive-date=2019-11-12}} [https://web.archive.org/web/20210723171917/https://github.com/Microsoft/MS-DOS/blob/master/v1.25/source/TRANS.ASM] (NB. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is [[SCP MS-DOS 1.25]] and [[TeleVideo PC DOS 2.11]].)</ref>
Line 246 ⟶ 297:
<ref name="Barry_1982_XLT86">{{cite news |title=XLT-86, a CP/M utility program by Digital Research |author-first=Tim |author-last=Barry |series=Software Review |newspaper=[[InfoWorld]] – The Newsweekly for Microcomputer Users |issn=0199-6649 |publisher=[[Popular Computing, Inc.]] |date=1982-04-05 |volume=4 |issue=13 |pages=40–41, 53 |url=https://books.google.com/books?id=ZjAEAAAAMBAJ&pg=PA40 |access-date=2020-01-25 |url-status=live |archive-url=https://web.archive.org/web/20200201160327/https://books.google.com/books?id=ZjAEAAAAMBAJ&pg=PA40&lpg=PA41 |archive-date=2020-02-01 |quote=[…] XLT-86 1.1 […] XLT-86 is an analytical translator program written in [[PL/I-80]]. It reads the entire 8080 source program, assembles it to machine code, analyzes the register, memory and flag utilization, and emits an optimized [[8086]] assembly-language program. […] There is also a version of XLT-86 for those of you who have access to a [[VAX 11/750]] or [[VAX 11/780|11/780]]. This version can translate much larger programs. It also costs $8000. […] While the translator adds some labels and equates to the source program as part of the translation, all original comments and program labels are passed through intact to the translated program. […] The program translation proceeds in a five-step process. First, the program is scanned and assembled to produce symbol values and locations. Second, the program structure is analyzed and decomposed into [[basic block]]s. Third, the basic blocks are analyzed to determine [[program flow]] and resource usage. Forth, the [[block (programming)|block structure]] and [[register allocation]] data is gathered into a listing for the user. Fifth, the flow information and source program are used to produce the [[8086]] source program. […]}}</ref>
<ref name="Taylor_1982_Translators">{{cite magazine |title=Upward migration – Part 1: Translators – Using translation programs to move CP/M-86 programs to CP/M and MS-DOS<!-- this is the actual title, however it is faulty--> |trans-title=<!-- this is the title as it should have been -->Using translation programs to move CP/M programs to CP/M-86 and MS-DOS |author-first1=Roger |author-last1=Taylor |author-first2=Phil |author-last2=Lemmons |date=June 1982 |magazine=[[BYTE]] |issn=0360-5280 |id={{CODEN|BYTEDJ}} |volume=7 |number=6 |publisher=[[BYTE Publications Inc.]] |pages=321–322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344 |url=https://tech-insider.org/personal-computers/research/acrobat/8206-b.pdf |access-date=2020-01-15 |url-status=live |archive-url=https://web.archive.org/web/20200116024623/https://tech-insider.org/personal-computers/research/acrobat/8206-b.pdf |archive-date=2020-01-16 |quote=[…] [[Digital Research]]'s XLT86 takes standard [[8080]] source code in a format compatible with ASM, MAC, or RMAC assemblers and converts the 8080 source code to [[8086]] source code in a format compatible with ASM86 operating under either [[CP/M-80]] or [[CP/M-86]]. Since XLT86 is written in [[PL/I-80]], the translator can run either stand-alone under CP/M-80 or for [[cross development]] under VAX/VMS. It produces optimized 8086 code in a five-phase, [[multipass compiler|multipass]] process, doing [[global data-flow analysis]] to determine optimal register usage. Although macro definitions are not supported, conditional-assembly directives are […] if you want macro expansion, you can use a pass through MAC or RMAC to produce a PRN file that can be edited […] to produce an expanded source file for input acceptable to XLT86. XLT86 does not recognize [[Z80]] instructions. XLT86 passes repeat loops through to the 8086 source code. XLT86 analyzes the source program in its entirety, determining the [[block (programming)|block structure]] and the register/flag usage. Working from this information, it translates the code to 8086 assembler code in an optimized way. The decision algorithm for each instruction type is given in […] the manual […] Register mapping generally follows […] with a loose relationship between the 8086 [[AX register|AX]] and the 8080 [[Program status word|PSW]]; the exact relationship is determined from register usage at [[translate time]]. Many [[Runtime (program lifecycle phase)|runtime]] options are available to control the translation process, both on the command line and embedded in the 8080 source text. […] XLT86 is a sophisticated program that does a reasonable job of optimizing the translation of 8080 source code to 8086 source code. [[BDOS]] calls from CP/M-80 are mapped into BDOS calls that are compatible with CP/M-86. XLT86 has special features for handling translation of conditional JMP and CALL instructions in 8080 source code. In the 8080 instructions, JMP and CALL instructions are capable of reaching any address within the 64K-byte region. The 8086 conditional JMP instructions can reach only 128 bytes on either side of the [[Instruction pointer|IP]] […] register. XLT86 examines the target of the conditional JMP. If the target cannot be reached, XLT86 changes the sense of the conditional JMP and skips over a long JMP to the target address. Since there are no conditional CALL or RET instructions in the 8086, the sense of the condition is changed and a short conditional JMP is performed to skip over an unconditional CALL or RET. […] the segment registers allow for separation of code and data regions. […] XLT86 examines an expression and determines the proper segment for the particular instruction. […]}} [https://archive.org/details/byte-magazine-1982-06] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0323.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0324.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0326.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0328.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0330.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0332.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0334.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0336.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0338.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0340.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0342.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0344.pdf] [https://www.americanradiohistory.com/hd2/IDX-Consumer/Archive-Byte-IDX/IDX/80s/82-83/Byte-1982-06-OCR-Page-0346.pdf] (13 pages)</ref>
<ref name="Warren_1982_Sorcim">{{cite news |author-first=Jim C. |author-last=Warren, Jr. |author-link=Jim Warren (computer specialist) |title=Sorcim' Somethin' |series=Rumors Mongered Here |date=July 1982 |newspaper=[[Silicon Gulch Gazette]] |volume=7<!-- derived, not printed on journal --> |number=30<!-- absolute number, not relative to volume --> |publisher=[[West Coast Computer Faire|Computer Faire]] |___location=Woodside, California, USA |pages=1, 2, 4, 6, 11, 14, 15 [11<!-- quote taken from page 11 -->] |url=https://amaus.net/static//S100/MAGAZINE/silicon%20gulch/30%20198207%20silicon%20gulch.pdf |archive-url=https://web.archive.org/web/20211130183655/https://amaus.net/static/S100/MAGAZINE/silicon%20gulch/30%20198207%20silicon%20gulch.pdf |url-status=usurped |archive-date=30 November 2021 |access-date=2020-01-15 |quote=[…] [[Sorcim]] just completed the purchase of [[Innovative Software Applications|ISA]]. […] They have also had an 8080-to-8086 translator – Trans-86 – operational for over a year […]}}</ref>
<ref name="CompuPro_1982">{{cite magazine |title=CompuPro |type=Advertisement |magazine=[[PC: The Independent Guide To IBM Computers]] |issn=<!-- not assigned at this time, but already applied for --> |volume=1 |number=1 |id=Premiere/Charter issue |publisher=[[Software Communications, Inc.]] |date=February–March 1982 |pages=70–71 |url=https://archive.org/details/bub_gb_w_OhaFDePS4C |access-date=2020-01-23 |quote=[…] WHY? FLEXIBILITY. [[CompuPro]]'s 85/88 CPU runs CP/M 80, 86, MP/M II and MP/M 86. We offer WORDSTAR dBASE II SUPERCALC a host of languages, 8080 to 8088 translators and more! COMPATIBILITY. Our systems can use CP/M 2.2 utilities to write programs for the IBM PC. You simply create 8088 source (either write it with your favorite CP/M 80 editor or translate it with [[Sorcim]]'s TRANS 86), cross-assemble your source (with Sorcim's ACT86), link your hex file (with CP/M 80's LOAD command), translate it to the IBM PC (with G&G's CPM-IBM program), and run it on your IBM PC! This procedure DOES NOT require MS-DOS! […] WHY? FLEXIBILITY. [[CompuPro]]'s 85/88 CPU runs CP/M 80 & 86 or MS-DOS. We offer WORDSTAR, dBASE II, TRANS86, XLT86, ACT86, SUPERCALC, CBASIC, MBASIC, MFORTRAN and more! […]}} [https://archive.org/stream/bub_gb_w_OhaFDePS4C/bub_gb_w_OhaFDePS4C_djvu.txt] [https://archive.org/download/bub_gb_w_OhaFDePS4C/bub_gb_w_OhaFDePS4C.pdf]</ref>
<ref name="Swaine_1982_CPM">{{cite news |title=Digital Research founder discusses his view of the business |series=Special section: CP/M |editor1-first=Michael |editor1-last=Swaine |editor-link1=Michael Swaine (technical author) |editor2-first=Paul |editor2-last=Freiberger |editor-link2=Paul Freiberger |editor3-first=John Gregory |editor3-last=Markoff |editor-link3=John Gregory Markoff |author-first=Gary Arlen |author-last=Kildall |author-link=Gary Arlen Kildall |date=1982-04-19 |newspaper=[[InfoWorld]] – The Newsweekly for Microcomputer Users |issn=0199-6649 |publisher=[[Popular Computing, Inc.]] |volume=4 |issue=15 |pages=23–24 |url=https://books.google.com/books?id=YzAEAAAAMBAJ&pg=PA23 |access-date=2020-01-17 |url-status=live |archive-url=https://web.archive.org/web/20200201160838/https://books.google.com/books?id=YzAEAAAAMBAJ&pg=PA23&lpg=PA23 |archive-date=2020-02-01 |quote=[…] Kildall: […] A year and a half ago I was probably spending 75% of my time on the business and 25% on programming. XLT-86 was a product I was working on at that time, and it took me nine months to do it. That would have been a three-month project if I had been able to concentrate on it. […]}}</ref>
Line 271 ⟶ 322:
<ref name="Sector7_1993_Transpiler">{{cite news |title=Transpiler |author=((Sector 7 Software Limited)) |___location=Bedford, Bedfordshire, UK |newspaper=[[Official Gazette of the United States Patent and Trademark Office]] |volume=1157 |edition=1 |date=1993-12-07 |orig-date=1992-09-22 |publisher=[[U.S. Patent and Trademark Office]] |page=TM 81 |series=Class 9 |id=SN 74-316.610 |url=https://books.google.com/books?id=Aokm04NulboC&pg=RA1-PA81 |access-date=2020-01-18 |url-status=live |archive-url=https://web.archive.org/web/20200201130513/https://books.google.de/books?id=Aokm04NulboC&pg=RA1-PA81&lpg=RA1-PA81&redir_esc=y |archive-date=2020-02-01 |quote=[…] Priority claimed under Sec. 44(D) on United Kingdom Application No. 1495953, filed 1992-03-31 Reg. No. A1495953, dated 1992-03-31, expires 1999-03-31. For computer software and programs (U.S. Cl. 38). First use 1991-08-01, in commerce 1991-08-01.}} (NB. This company develops products such as VX/BASIC, a BASIC-to-C transpiler for [[DEC VMS]]. Despite their claim, theirs is not the first public use of the term transpiler, see i.e. [[#ARC-1988|ARC's BASIC-to-C transpiler]] for the [[Amiga]] in 1988 and the [[#Pountain-1989|Occam Transpiler]] by Concurrent Technology Systems (CTS)<!-- by Meier and Wespi --> in 1989.)</ref>
<ref name="Ocam1">{{cite web |title=Overview |work=Js_of_ocaml - Reference Manual |publisher=Ocsigen |url=http://ocsigen.org/js_of_ocaml/manual/overview |access-date=2014-10-08 |archive-url=https://web.archive.org/web/20181208123603/http://ocsigen.org/js_of_ocaml/manual/overview |archive-date=2018-12-08}}</ref>
<ref name="J2EIF">{{cite book |title=J2Eif Research Page – Chair of Software Engineering |date=2011 |pages=20–35 |doi=10.1007/978-3-642-21952-8_4 |publisher=Se.inf.ethz.ch |isbn=978-3-642-21952-8 |url=http://se.inf.ethz.ch/research/j2eif/ |access-date=2014-07-08 |url-status=live |archive-url=https://web.archive.org/web/20200101165402/http://se.inf.ethz.ch/research/j2eif/ |archive-date=2020-01-01}}</ref>
<ref name="C2EIF">{{cite web |title=C2Eif Research Page – Chair of Software Engineering |publisher=Se.inf.ethz.ch |url=http://se.inf.ethz.ch/research/c2eif/ |access-date=2014-07-08 |url-status=live |archive-url=https://web.archive.org/web/20200101165402/http://se.inf.ethz.ch/research/c2eif/ |archive-date=2020-01-01}}</ref>
<ref name="Skip">{{cite web |title=Skip |url=http://skip.tools/ |access-date=2024-05-17 |url-status=live |archive-url=https://web.archive.org/web/20240518013446/https://skip.tools/ |archive-date=2024-05-18}}</ref>
<ref name="Swiftify_Objective-C">{{cite web |title=Swiftify Objective-C to Swift Converter |url=https://objectivec2swift.com/ |access-date=2017-11-14 }}</ref>
<ref name="RuntimeConverter">{{cite web |title=Runtime Converter |url=http://www.runtimeconverter.com/ |access-date=2017-11-14 |url-status=live |archive-url=https://web.archive.org/web/20190710150000/http://www.runtimeconverter.com/ |archive-date=2019-07-10}}</ref>
Line 295 ⟶ 349:
<ref name="Olivenbaum">{{cite web |title=h5 🚀 - C# to JavaScript compiler |author=theolivenbaum |website=[[GitHub]] |date=2021-11-13 |url=https://github.com/theolivenbaum/h5 |access-date=2021-11-14}}</ref>
<ref name="C2Rust">{{cite web |title=C2Rust repository |website=[[GitHub]] |date=2022-04-15 |url=https://github.com/immunant/c2rust/blob/master/README.md}}</ref>
<ref name="Intel_1983_ASM86">{{cite book |title=ASM86 Language Reference Manual |chapter=The 8086/8087/8088 Development Environment |date=November 1983 |orig-date=September 1981 |publisher=[[Intel Corporation]] |publication-place=Santa Clara, California, USA |id=Order Number 121703-003 |pages=1-1–1-2 |url=https://mark-ogden.uk/files/intel/publications/121703-003%20ASM86%20Language%20Reference%20Manual-Nov83%23Mar85.pdf |access-date=2023-11-28
}}
Line 303 ⟶ 357:
* {{cite web |title=8080 to 8086 ASM translator, with ASM source |author-first1=Frank J. |author-last1=Zerilli |author-first2=Craig |author-last2=Derouen |date=<!-- 1988-08-08 -->1986-12-11 |orig-date=1985-08-15, 1984-12-20, 1984-11-20 |version=XLT86.COM 1.10 |work=[[SIMTEL]] |url=http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/pc/mirror/simtelnet/msdos/asmutl/xlt86.zip |access-date=2020-01-18 |url-status=live |archive-url=https://web.archive.org/web/20200201123156/http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/pc/mirror/simtelnet/msdos/asmutl/xlt86.zip |archive-date=2020-02-01}} [https://web.archive.org/web/20200201125052/http://msx2.org/NewPack/Mirrors/msx_ricardo_jurczky/imagem_msx_disco/F_/devel/asm/xlt86/<!-- http://msx2.org/NewPack/Mirrors/msx_ricardo_jurczky/imagem_msx_disco/F_/devel/asm/xlt86/ --> 1984-11-11 version 1.05] (NB. The [[DOS]] executable XLT86.COM [12 KB] translates Intel 8080 assembly language source code to Intel 8086 assembly language source code. Despite its name this implementation in 8086 assembly is ''not'' related to Digital Research's earlier and much more sophisticated [[#XLT86|XLT86]].)
* {{anchor|PASMO}}{{cite web |title=Pasmo, ensamblador cruzado Z80 portable / portable Z80 cross assembler |language=es, en |author-first=Julián |author-last=Albo |date=2009-04-24 |url=http://pasmo.speccy.org/ |access-date=2020-02-20 |url-status=live |archive-url=https://web.archive.org/web/20200220234923/http://pasmo.speccy.org/ |archive-date=2020-02-20 |quote=[…] Pasmo is a [[Z80]] [[cross assembler]] […] that […] can generate object code in the following formats: raw binary, [[Intel HEX]], PRL for [[CP/M Plus]] [[Resident System Extension|RSX]], Plus3Dos ([[Spectrum +3]] disk), TAP, TZX and CDT (Spectrum and [[Amstrad CPC]] emulators tape images), [[AMSDOS|AmsDos]] (Amstrad CPC disk) and [[MSX]] (for use with BLOAD from disk in Basic). Starting with version 0.5.0 […] can also generate [[8086]] code from Z80 sources, in binary format for [[DOS|Ms-dos]] [[COM file|COM]] files or in [[CP/M-86|CP/M 86]] [[CMD file (CP/M)|CMD]] format. […]}} [https://github.com/mkoloberdin/pasmo] [https://github.com/mrcook/Z80Assembly/blob/master/docs/pasmo.md]
* {{cite magazine |title=Trump Card – Part 1: Hardware – Speed up your IBM PC with 16-bit coprocessing power |volume=9 |number=5 |date=May 1984 |pages=40–52, 54–55 |magazine=[[BYTE]] – The small systems journal |publisher=[[McGraw-Hill, Inc.]] |issn=0360-5280 |series=Ciarcia's Circuit Cellar |author-first=Steve |author-last=Ciarcia |author-link=Steve Ciarcia |url=https://www.americanradiohistory.com/Archive-Byte/80s/Byte-1984-05.pdf |access-date=2020-01-29 |quote=[…] It instead executes programs written in high-level languages such as BASIC and C (a Pascal compiler and a 8088 to Z8000 translator are in the works. […]}} and {{cite magazine |title=Trump Card – Part 2: Software – TBASIC and C compilers and an assemble |volume=9 |number=6 |date=June 1984 |pages=115–122 |magazine=[[BYTE]] – The small systems journal |publisher=[[McGraw-Hill, Inc.]] |issn=0360-5280 |series=Ciarcia's Circuit Cellar |author-first=Steve |author-last=Ciarcia |author-link=Steve Ciarcia |url=https://www.americanradiohistory.com/Archive-Byte/80s/Byte-1984-06.pdf |access-date=2020-01-29 |quote=[…] I expect that object-code translators for Z80-to-Z8000 and 8088-to-Z8000 conversions will soon be available […]}}, also available as {{cite book |chapter=Trump Card – Part 1: Hardware – Speed up your IBM PC with 16-bit coprocessing power & Part 2: Software – TBASIC and C compilers and an assemble |pages=138–152, 153–160 |title=Ciarcia's Circuit Cellar |volume=7 |author-first=Steve |author-last=Ciarcia |author-link=Steve Ciarcia |editor-first1=Daniel |editor-last1=Gonneau |editor-first2=Fred |editor-last2=Bernardi |editor-first3=Richard |editor-last3=Ausburn |publisher=[[McGraw-Hill Publishing Company]] |date=1990 |isbn=0-07-010969-9 |chapter-url=https://books.google.com/books?id=fBuiNpYlyHcC&pg=RA2-PA138 |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20200201125917/https://books.google.com/books?id=fBuiNpYlyHcC&pg=RA2-PA138&lpg=RA2-PA140 |archive-date=2020-02-01}} {{usurped|1=[https://web.archive.org/web/20211130191536/https://amaus.net/static/S100/zilog/z8000/BYTE%20Trumpcard%20Z8000.pdf]}}
* {{anchor|MIGR2ST7}}{{cite web |title=Translating Assembly Code From HC05 To ST7 |id=AN1106/0200 |type=Application Note |author=Microcontroller Division Application Team |publisher=[[STMicroelectronics]] |date=2000 |url=https://www.st.com/content/ccc/resource/technical/document/application_note/4f/89/a9/95/41/e7/4f/4c/CD00004128.pdf/files/CD00004128.pdf/jcr:content/translations/en.CD00004128.pdf |access-date=2020-01-18}} (9 pages) (NB. This software translator was developed by ST and translates [[Motorola]] [[Motorola 6805|6805]]/[[Motorola 68HC05|HC05]] assembly source code in 2500AD Software format into [[ST7 (microcontroller family)|ST7]] source code. The MIGR2ST7.EXE executable for [[Windows]] is available from "MCU ON CD".)
* {{cite web |title=What do people mean when they say "transpiler"? |author-first=Lindsey |author-last=Kuper |department=language implementation |date=2017-07-30 |website=composition.al |url=http://composition.al/blog/2017/07/30/what-do-people-mean-when-they-say-transpiler/ |access-date=2022-01-09 |url-status=live |archive-url=https://web.archive.org/web/20220109194650/http://composition.al/blog/2017/07/30/what-do-people-mean-when-they-say-transpiler/ |archive-date=2022-01-09}}<!-- ; {{cite web |title=My first fifteen compilers |author-first=Lindsey |author-last=Kuper |department=language implementation |date=2017-07-31 |website=composition.al |url=http://composition.al/blog/2017/07/31/my-first-fifteen-compilers/ |access-date=2022-01-09 |url-status=live |archive-url=https://web.archive.org/web/20220109220047/http://composition.al/blog/2017/07/31/my-first-fifteen-compilers/ |archive-date=2022-01-09}}; {{cite web |title=I have a draft blog post called "Stop saying 'transpiler'" |author-first=Lindsey |author-last=Kuper |date=2015-01-01 |url=https://twitter.com/lindsey/status/550513490658488320 |access-date=2022-01-09 |url-status=live |archive-url=https://web.archive.org/web/20220109194742/https://twitter.com/lindsey/status/550513490658488320 |archive-date=2022-01-09}} -->
|