I have been following the discussions in BYTE on new microprocessors and systems, and I keep reading that "the code has to be recompiled to take advantage of the CPU." When I read about VLIW's (very large instruction word's) need for smart compilers, I wondered why I hadn't seen any mention of reassemblers. By reassemblers I mean programs that take a binary and generate a new binary optimized for another CPU. Here you have the K5 reconstructing CISC into RISC on the fly; you have processors spending huge numbers of transistors trying to execute code out of order to take advantage of superscalar pipelining; and you have PowerPC emulating binaries. These all seem to lead to an obvious approach of spending the time once in software to determine what one binary is doing and then to generate a new binary t
hat takes advantage of another CPU's strengths.
Alan P. W. Hewett
Mt. Vernon, OH
apwh@cbpine.att.com
The actual term for your reassembler is binary translation, and the short answer is that it does exist. Echo Logic (Holmdel, NJ) has a technology called FlashPort that can translate among several different binary formats, including 680x0 to PowerPC and x86. DEC also has a translator that moves VAX binaries to Alpha. But binary translation is not an answer to the questions of RISC vs. CISC, optimized compilation, or VLIW. Also, there are some unanswered legal questions if you translate a binary without authorization from the original software developer.
I think there are other approaches yet to be explored that address these problems. For example, what if software was delivered in some form of pseudocode that could be compiled and optimized for a specific computer as part of the installation process? You could buy an application in a semicompil
ed format, and the installer would automatically compile and optimize the code. If you later upgrade to a completely different platform, the software would get recompiled again on installation, using a plug-in installation compiler. This arrangement would insulate the software from details of the hardware and still achieve optimum performance and compatibility without emulation.--Tom Halfhill
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it
is
theoretical--and no language better exemplifies this than C++.
BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin,
and dozens of other CMP publications—bringing
you critical news and information about wireless communication,
computer security, software development, embedded systems,
and more!