Source-to-source compiler: Difference between revisions

Content deleted Content added
Meak (talk | contribs)
Update with the Dafny programming language (I am a Dafny contributor)
Altered template type. Add: chapter-url, chapter, title. Removed or converted URL. | Use this tool. Report bugs. | #UCB_Gadget
 
(21 intermediate revisions by 16 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 [[translatorTranslator (computing)|translator]] that takes the [[source code]] of a program written in a [[programming language]] as its input and produces an equivalent source code in the same or a different programming language, usually as an [[intermediate representation]]. A source-to-source translator converts between programming languages that operate at approximately the same level of [[abstractionAbstraction (computer science)|abstraction]], while a traditional [[compiler]] translates from a [[highHigh-level programming language|higher level programming language]] to a [[lowLow-level programming language|lower level programming language]]. For example, a source-to-source translator may perform a translation of a program from [[Python (programming language)|Python]] to [[JavaScript (programming language)|JavaScript]], while a traditional compiler translates from a language like [[C (programming language)|C]] to [[Assembly language|assemblerassembly]] or [[Java (programming language)|Java]] to [[Java bytecode|bytecode]].<ref name="Devopedia_Transpiler"/> An [[automatic parallelizing]] compiler will frequently take in a high level language program as an input and then transform the code and annotate it with parallel code annotations (e.g., [[OpenMP]]) or language constructs (e.g. [[Fortran]]'s <code>forall</code> statements).<ref name="Pountain_1989"/><ref name="Compiler_Types"/>
 
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 18:
=== Intel CONV86 ===
{{anchor|CONV86}}
[[Intel]] marketed their 16-bit processor [[Intel 8086|8086]] to be [[source-code compatibility|source compatible]] to the [[Intel 8080|8080]], an 8-bit processor.<ref name="Scanlon_1988"/> To support this, Intel had an [[Intel ISIS-II|ISIS-II]]-based translator from 8080 to 8086 source code named CONV86<ref name="Intel_1978_CONV86"/><ref name="Intel_1979_CONV86"/><ref name="Intel_1983_ASM86"/><ref name="Nelson_1988"/> (also referred to as CONV-86<ref name="Intel_1979_Family"/> and CONVERT&nbsp;86<ref name="Freiberger_1981_Translators"/><ref name="Taylor_1982_Translators"/>) available to [[OEM]] customers since 1978, possibly the earliest program of this kind.<ref group="nb" name="NB1_WordStar"/> It supported multiple levels of translation and ran at 2&nbsp;MHz on an Intel Microprocessor Development System [[Intel MDS-800|MDS-800]] with 8-inch [[floppy drive]]s. According to user reports, it did not work very reliably.<ref name="Guzis_2013_ISIS"/><ref name="Guzis_2016_Translators"/>
 
=== SCP TRANS86 ===
{{anchor|TRANS86|TRANS|SCP}}[[Seattle Computer Products]]' (SCP) offered TRANS86.COM,<ref name="Taylor_1982_Translators"/><ref name="BYTE_2018_MASM"/><ref name="Paterson_1983"/> written by [[Tim Paterson]] in <!-- at least August per ref, possibly earlier in late 1979? -->1980 while developing [[86-DOS]].<ref name="BYTE_1980_86-DOS"/><ref name="Paterson_1994_Origins_DOS"/><ref name="Paterson_2007_Design-DOS"/> The utility could translate Intel 8080 and [[Zilog]] [[Z80]] assembly source code (with Zilog/[[Mostek]] [[mnemonic]]s) into {{Not a typo|.ASM}} source code for the Intel 8086 (in a format only compatible with SCP's [[cross-assembler]] ASM86 for [[CP/M-80]]), but supported only a subset of [[opcode]]s, registers and modes, and often still required significant manual correction and rework afterwards.<ref name="SCP_Cross"/><ref name="BYTE_1980_86-DOS"/> Also, performing only a mere [[transliteration]],<ref name="Freiberger_1981_Translators"/><ref name="BYTE_2018_MASM"/><ref name="Intel_1978_CONV86"/><ref name="Intel_1979_CONV86"/> the brute-force [[single-pass translator]] did not carry out any register and jump optimizations.<ref name="SCP_1980_86-DOS"/><ref name="Paterson_2014_MSDOS125"/> It took about 24&nbsp;KB of RAM.<ref name="Taylor_1982_Translators"/> The SCP version 1 of TRANS86.COM ran on Z80-based systems.<ref name="Taylor_1982_Translators"/><ref name="BYTE_2018_MASM"/> Once 86-DOS was running, Paterson, in a [[self-hosting (compilers)|self-hosting]]-inspired approach, utilized TRANS86 to convert itself into a program running under 86-DOS.<ref name="Paterson_2007_Design-DOS"/><ref name="BYTE_2018_MASM"/> Numbered version 2<!-- f.e. TRANS 2.21 -->, this was named TRANS.COM instead.<ref name="BYTE_2018_MASM"/><ref name="Paterson_2014_MSDOS125"/><ref name="SCP_1980_86-DOS"/><ref name="SCP_86-DOS"/><ref name="SCP_TRANS"/> Later in 1982, the translator was apparently also available from [[Microsoft]].<ref name="Taylor_1982_Translators"/><ref name="Hughes_1982_MS-DOS"/>
 
=== Sorcim TRANS86 ===
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&nbsp;1.0 in September 1981. XLT86&nbsp;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&nbsp;KB of RAM for itself plus additional memory for the [[control-flow graph|program graph]]. On a 64&nbsp;KB memory system, the maximum source file size supported was about 6&nbsp;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|ES6+]] 6+ ([[JavaScript|JS]])
|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|JS]], [[Java (programming language)|Java]], C++, [[Go (programming language)|Go]], [[Python (programming language)|Python]]
|
|-
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|HipHop]] for PHP (HPHPc)
|[[PHP]]
|C++
Line 111 ⟶ 126:
|[[COBOL]], Java
|COBOL, Java
|
|-
|[https://github.com/thepowersgang/mrustc mrustc]
|[[Rust (programming language)|Rust]]
|C
|Experimental compiler that is able to bootstrap the official rustRust compiler (rustc)
|-
|[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 130 ⟶ 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 145 ⟶ 192:
|F#
|Python
|
|}
 
== 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 164 ⟶ 212:
| [[Google Web Toolkit]] || [[Java (programming language)|Java]] program that uses a specific [[Application programming interface|API]] || [[JavaScript]] || The Java code is a little bit constrained compared to normal Java code.
|-
| Js_of_ocaml<ref name="Ocam1"/> of Ocsigen || [[OCaml]] || [[JavaScript]] ||
|-
| J2Eif<ref name="J2EIF"/> || [[Java (programming language)|Java]] || [[Eiffel (programming language)|Eiffel]] || The resulting Eiffel code has classes and structures similar to the Java program but following Eiffel syntax and conventions.
|-
| 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 179 ⟶ 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 230 ⟶ 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 journalbook |author-first=Gary Arlen |author-last=Kildall |author-link=Gary Kildall |date=1973-10-01 |title=A Unified Approach to Global Program Optimization |journal=Proceedings of the 1st Annualannual ACM SIGACT-SIGPLAN Symposiumsymposium on Principles of Programmingprogramming Languageslanguages (POPL)- |series=POPL '73 |chapter=A unified approach to global program optimization |author-link=Gary Kildall |date=1973-10-01 |___location=Boston, Massachusetts, USA |pages=194–206 |doi=10.1145/512927.512945 |hdl=10945/42162 |s2cid=10219496 |chapter-url=http://static.aminer.org/pdf/PDF/000/546/451/a_unified_approach_to_global_program_optimization.pdf |access-date=2006-11-20 |url-status=live |archive-url=https://web.archive.org/web/20170629213307/http://static.aminer.org/pdf/PDF/000/546/451/a_unified_approach_to_global_program_optimization.pdf |archive-date=2017-06-29}}</ref>
<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 [[mini-computerminicomputer]]s. The CP/M version is priced at [[United States dollar|$]]150. The VAX version sells for $8,000. […]}}</ref>
<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&nbsp;KB] as well as two overlay files XLT00.OVL [8&nbsp;KB] and XLT01.OVL [9&nbsp;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 244 ⟶ 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 267 ⟶ 320:
<ref name="ARC_1988_Transpiler">{{anchor|ARC-1988}}{{cite magazine |title=Aus BASIC mach C: B→C Transpiler |trans-title=Turn BASIC into C: B→C Transpiler |author=ARC-Softwaresystems |___location=Esslingen, Germany |type=Advertisement |language=de |magazine=[[:de:Amiga-Magazin|Amiga-Magazin]] |publisher=[[Markt & Technik Verlag Aktiengesellschaft]] |issn=0933-8713 |date=June 1988 |volume=1988 |issue=6 |page=101 |url=https://archive.org/details/AmigaMagazin198806 |access-date=2020-01-18 |url-status=live |archive-url=https://web.archive.org/web/20200201131207/https://archive.org/details/AmigaMagazin198806 |archive-date=2020-02-01 |quote=[…] Achtung [[C (language)|C]]- und [[Basic (language)|Basic]]-Programmierer! […] Jetzt gibt es den B→C TRANSPILER das einzigartige Umwandlungs-Software-System von ARC […] Der B→C TRANSPILER übersetzt lauffähige [[Amiga|AMIGA]]-Basicprogramme in compilierbaren C-Code. […] Durch Spezialbefehle kann C-Code in Basicprogramme direkt integriert werden. […] Basic-Befehle werden erweitert transpiliert. ([[HAM mode|HAM-Modus]], [[Interchange File Format|IFF]]<!-- or [[If and only if|IFF]]? -->, usw. werden unterstützt). […] Mit diesem Konzept neuester Generation verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […]}} [https://archive.org/details/AmigaMagazin198806]</ref>
<ref name="Pountain_1989">{{anchor|Pountain-1989}}{{cite magazine |title=Configuring parallel programs, Part 1: The Occam Transpiler, now under development, will make writing software for parallel processing easier |author-first=Dick |author-last=Pountain |magazine=[[BYTE (magazine)|BYTE]] |publisher=[[McGraw-Hill, Inc.]] |issn=0360-5280 |volume=14 |number=13 |series= |date=December 1989 |id=<!-- |ia=byte-magazine-1989-12 --> ark:/13960/t34188734 |pages=349–352 |url=https://archive.org/details/byte-magazine-1989-12/page/n382/mode/1up |access-date=2022-01-06 |quote-page=350 |quote=[…] The name ''Transpiler'' is meant to suggest a combination of [[transputer]] and [[compiler]], in just the same way that ''transputer'' was coined from ''[[transistor]]'' and ''[[computer]]'' (i.e., a computer that is also a component). […]}} (NB. Uses the term ''Occam transpiler'' as a synonym for a source-to-source compiler working as a [[pre-processor]] that takes a normal [[occam (programming language)|Occam]] program as input and derives a new Occam source code as output with link-to-channel assignments etc. added to it thereby ''[[computer configuration|configuring]]'' it for [[parallel processing (computing)|parallel processing]] to run as efficient as possible on a network of [[transputer]]s.)</ref>
<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&nbsp;81 |series=Class 9 |id=SN&nbsp;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 293 ⟶ 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 |quote-page= |quote=}} (404 pages)</ref>
}}
 
Line 300 ⟶ 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&nbsp;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&nbsp;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}} -->