Recompilation
   HOME





Recompilation
A binary recompiler is a compiler that takes executable binary files as input, analyzes their structure, applies transformations and optimizations, and outputs new optimized executable binaries. The foundation to the concepts of binary recompilation were laid out by Gary Kildall with the development of the optimizing assembly code translator XLT86 in 1981. See also * Binary optimizer (binary-to-binary) * Binary translator (binary-to-binary) * Decompiler (binary-to-source) * Disassembler (binary-to-source) * Dynamic recompiler (binary-to-binary) * Transcompiler (source-to-source) * Honeywell Liberator (running IBM 1401 programs on Honeywell H200) References Further reading * {{cite journal , title=From hack to elaborate technique - A survey on binary rewriting , author-first1=Matthias , author-last1=Wenzl , author-first2=Georg , author-last2=Merzdovnik , author-first3=Johanna , author-last3=Ullrich , author-first4=Edgar R. , author-last4=Weippl , location=Vienna, Austr ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


Binary Translator
In computing, binary translation is a form of binary recompilation where sequences of instructions are translated from a source instruction set (ISA) to the target instruction set with respect to the operating system for which the binary was compiled for. In some cases such as instruction set simulation, the target instruction set may be the same as the source instruction set, providing testing and debugging features such as instruction trace, conditional breakpoints and hot spot detection. The two main types are static and dynamic binary translation. Translation can be done in hardware (for example, by circuits in a CPU) or in software (e.g. run-time engines, static recompiler, emulators, all are typically slow). Motivation Binary translation is motivated by a lack of a binary for a target platform, the lack of source code to compile for the target platform, or otherwise difficulty in compiling the source for the target platform. Statically recompiled binaries run potentia ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


Dynamic Recompiler
In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code to reflect the program's run-time environment, and potentially produce more efficient code by exploiting information that is not available to a traditional static compiler. Uses Most dynamic recompilers are used to convert machine code between architectures at runtime. This is a task often needed in the emulation of legacy gaming platforms. In other cases, a system may employ dynamic recompilation as part of an adaptive optimization strategy to execute a portable program representation such as Java or .NET Common Language Runtime bytecodes. Full-speed debuggers also utilize dynamic recompilation to reduce the space overhead incurred in most deoptimization techniques, and other features such as dynamic thread migration. Tasks The main task ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


XLT-86
A source-to-source translator, source-to-source compiler (S2S compiler), transcompiler, or transpiler is a type of 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 abstraction, while a traditional compiler translates from a higher level language to a lower level language. For example, a source-to-source translator may perform a translation of a program from Python to JavaScript, while a traditional compiler translates from a language like C to assembly or Java to bytecode. 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 ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]




Honeywell H200
The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in December 1963, the basis of later models in Honeywell 200 Series, including 1200, 1250, 2200, 3200, 4200 and others, and the character processor of the Honeywell 8200 (1968). Introduced to compete with IBM's 1401, the H200 is two or three times faster and, with software support, most of the time can execute IBM 1401 programs without need for their recompilation or reassembly. The Liberator marketing campaign exploited this compatibility, and was credited in later Honeywell publicity statements with stalling the sales of IBM 1401 machines. Honeywell claimed an initial rush of hundreds of orders for the H200 that itself stalled when IBM countered with a marketing emphasis on their System/360 product range that was then under development. Architecture As designed by Director of Engineering William L. Gordon, the H200 memory consists of individually addressed characters, each comp ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


Binary Optimizer
An object code optimizer, sometimes also known as a post pass optimizer or, for small sections of code, peephole optimizer, forms part of a software compiler. It takes the output from the source language compile step - the object code or binary file - and tries to replace identifiable sections of the code with replacement code that is more algorithmically efficient (usually improved speed). Examples * The earliest "COBOL Optimizer" was developed by Capex Corporation in the mid 1970s for COBOL. This type of optimizer depended, in this case, upon knowledge of "weaknesses" in the standard IBM COBOL compiler, and actually replaced (or patched) sections of the object code with more efficient code. The replacement code might replace a linear table lookup with a binary search for example or sometimes simply replace a relatively slow instruction with a known faster one that was otherwise functionally equivalent within its context. This technique is now known as strength reduction. F ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


Honeywell Liberator
The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in December 1963, the basis of later models in Honeywell 200 Series, including 1200, 1250, 2200, 3200, 4200 and others, and the character processor of the Honeywell 8200 (1968). Introduced to compete with IBM's 1401, the H200 is two or three times faster and, with software support, most of the time can execute IBM 1401 programs without need for their recompilation or reassembly. The Liberator marketing campaign exploited this compatibility, and was credited in later Honeywell publicity statements with stalling the sales of IBM 1401 machines. Honeywell claimed an initial rush of hundreds of orders for the H200 that itself stalled when IBM countered with a marketing emphasis on their System/360 product range that was then under development. Architecture As designed by Director of Engineering William L. Gordon, the H200 memory consists of individually addressed characters, each comp ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]


picture info

Compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language, low-level programming language (e.g. assembly language, object code, or machine code) to create an executable program.Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Second Edition, 2007 There are many different types of compilers which produce output in different useful forms. A ''cross-compiler'' produces code for a different Central processing unit, CPU or operating system than the one on which the cross-compiler itself runs. A ''bootstrap compiler'' is often a temporary compiler, used for compiling a more permanent or better optimised compiler for a language. Related software ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   [Amazon]