Retargeting: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Viewmont Viking
Undid revision 1264513594 by Seemaparmar (talk) Spam
 
imported>DavidCary
link to related articles, etc.
 
Line 11: Line 11:
Some retargetable compilers, e.g., [[GNU Compiler Collection|GCC]], became so widely ported and developed that they now include support for many optimizations and machine specific details that the quality of code often surpasses that of non-retargetable compilers on many CPUs.
Some retargetable compilers, e.g., [[GNU Compiler Collection|GCC]], became so widely ported and developed that they now include support for many optimizations and machine specific details that the quality of code often surpasses that of non-retargetable compilers on many CPUs.


A general-purpose global optimizer followed by machine-specific [[peephole optimization]] is a commonly used implementation technique.<ref>[http://www.well.com/~cwf/pro/Davidson%20and%20Fraser.%20The%20design%20and%20application%20of%20a%20retargetable%20peephole%20optimizer.pdf Davidson and Fraser; The Design and Application of a Retargetable Peephole Optimizer; ToPLaS v2(2) 191-202 (April 1980)]</ref>  The optimization of code for some high performance processors requires a detailed and specific knowledge of the architecture and how the instructions are executed.  Unless developers invest the large amount of time necessary to write a code generator specifically for an architecture, the optimizations performed by a retargetable compiler will only be those applicable to generic processor characteristics.
A general-purpose global optimizer followed by machine-specific [[peephole optimization]] is a commonly used implementation technique.<ref>{{Cite web |url=http://www.well.com/~cwf/pro/Davidson%20and%20Fraser.%20The%20design%20and%20application%20of%20a%20retargetable%20peephole%20optimizer.pdf |title=Davidson and Fraser; The Design and Application of a Retargetable Peephole Optimizer; ToPLaS v2(2) 191-202 (April 1980) |access-date=2009-08-31 |archive-date=2024-02-23 |archive-url=https://web.archive.org/web/20240223184609/http://www.well.com/~cwf/pro/Davidson%20and%20Fraser.%20The%20design%20and%20application%20of%20a%20retargetable%20peephole%20optimizer.pdf |url-status=dead }}</ref>  The optimization of code for some high performance processors requires a detailed and specific knowledge of the architecture and how the instructions are executed.  Unless developers invest the large amount of time necessary to write a code generator specifically for an architecture, the optimizations performed by a retargetable compiler will only be those applicable to generic processor characteristics.


A retargetable compiler is a kind of [[cross compiler]].
A retargetable compiler is a kind of [[cross compiler]].
Line 32: Line 32:
p. 63.
p. 63.
</ref>
</ref>
* [[UCSD Pascal]]
* [[Free Pascal]]


==Decompiler==
==Decompiler==
Line 53: Line 55:
* [http://tack.sourceforge.net The (open-source) ACK sourceforge page]
* [http://tack.sourceforge.net The (open-source) ACK sourceforge page]
* [http://nwcc.sourceforge.net Nils Weller's C compiler page]
* [http://nwcc.sourceforge.net Nils Weller's C compiler page]
* [https://retdec.com/ RetDec website]
* [https://retdec.com/ RetDec website] {{Webarchive|url=https://web.archive.org/web/20201024223534/https://retdec.com/ |date=2020-10-24 }}


[[Category:Compilers]]
[[Category:Compilers]]

Latest revision as of 21:14, 2 November 2025

Template:Short description Script error: No such module "about".

In software engineering, retargeting is an attribute of software development tools that have been specifically designed to generate code for more than one computing platform.

Compilers

A retargetable compiler is a compiler that has been designed to be relatively easy to modify to generate code for different CPU instruction set architectures. The history of this idea dates back to the 1950s when UNCOL was proposed as the universal intermediate language. The Pascal P-compiler is an example of an early widely used retargetable compiler.

The cost of producing a retargetable compiler that generates code of similar quality to a non-retargetable compiler (i.e., one designed to only ever produce code for a single processor) is higher because it is not possible to make use of cpu specific details throughout all phases of compilation. The benefits of a retargetable compiler is that the total cost over multiple CPUs is much lower than the combined cost of many individual non-targetable compilers.

Some retargetable compilers, e.g., GCC, became so widely ported and developed that they now include support for many optimizations and machine specific details that the quality of code often surpasses that of non-retargetable compilers on many CPUs.

A general-purpose global optimizer followed by machine-specific peephole optimization is a commonly used implementation technique.[1] The optimization of code for some high performance processors requires a detailed and specific knowledge of the architecture and how the instructions are executed. Unless developers invest the large amount of time necessary to write a code generator specifically for an architecture, the optimizations performed by a retargetable compiler will only be those applicable to generic processor characteristics.

A retargetable compiler is a kind of cross compiler. Often (but not always) a retargetable compiler is portable (the compiler itself can run on several different CPUs) and self-hosting.

Examples of retargetable compilers:

Decompiler

retdec ("Retargetable Decompiler") is an open source retargetable machine-code decompiler based on LLVM.Template:Fact

  • The decompiler is not limited to any particular target architecture, operating system, or executable file format:
  • Supported file formats: ELF, PE, Mach-O, COFF, AR (archive), Intel HEX, and raw machine code.
  • Supported architectures (currently 32bit only): Intel x86, ARM, MIPS, PIC32, and PowerPC.

Assemblers

Conversely, retargetable assemblers are capable of generating object files of different formats, which is useful in porting assembly language programs to various operating systems that run on the same CPU architecture (such as Windows and Linux on the x86 platform). NASM is one such assembler.

Further reading

  • A Retargetable C Compiler: Design and Implementation (Template:ISBN)

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Rainer Leupers, Peter Marwedel. "Retargetable Compiler Technology for Embedded Systems". 2001. (Template:ISBN) p. 63.

Script error: No such module "Check for unknown parameters".

External links