binary translation
DESCRIPTION
Binary Translation. Cambio di architettura. Problemi. E il vecchio software?. Costo di produzione software (tempo e denaro). Soluzioni. Compilare il vecchio sorgente con nuovi compilatori Emulazione hardware Emulazione/interpretazione software Binary translation. Binary translation. - PowerPoint PPT PresentationTRANSCRIPT
Binary TranslationBinary Translation
Cambio di architetturaCambio di architettura
ProblemiProblemi
E il vecchio software?
Costo di produzione softwareCosto di produzione software(tempo e denaro)(tempo e denaro)
Bugs
Manutenzione
Aggiornamento
SoluzioniSoluzioni
Compilare il vecchio sorgente con Compilare il vecchio sorgente con nuovi compilatorinuovi compilatori
Emulazione hardwareEmulazione hardware Emulazione/interpretazione softwareEmulazione/interpretazione software
Binary translationBinary translation
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione Risparmio sui testRisparmio sui test
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione Risparmio sui testRisparmio sui test Nessun disagio per gli utentiNessun disagio per gli utenti
Binary translationBinary translation
Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione Risparmio sui testRisparmio sui test Nessun disagio per gli utentiNessun disagio per gli utenti Distribuzione multipiattaformaDistribuzione multipiattaforma
DifficoltàDifficoltà
Simili a disassembler e decompilersSimili a disassembler e decompilers
Problema della terminazioneProblema della terminazione
Problema nella staticitàProblema nella staticità
DecompilationDecompilation
Decompilazione Decompilazione ((MikeVanEmmerik MikeVanEmmerik ))
Problema Decompilatore Decompilatore assembler
Disassemblatore ideale
Decompilatore bytecode
Separare codice e dati
si no si no
Separare codici e costanti
si no si facile
Recuperare parametri ecc.
si si no no
Analisi dei tipi si si no solo locali
Dichiarare dati si si si banale
Fondere istruzioni
si si no si
Salti strutturati, condizionali
si si no si
Esempio: dccEsempio: dcc
void main () {void main () {int loc1; int loc2; int loc3; int loc4;int loc1; int loc2; int loc3; int loc4; printf ("Input number of iterations: "); printf ("Input number of iterations: "); scanf ("%d", &loc1); scanf ("%d", &loc1); loc3 = 1; loc3 = 1; while ((loc3 <= loc1)) {while ((loc3 <= loc1)) { printf ("Input number:");printf ("Input number:"); scanf ("%d", &loc2);scanf ("%d", &loc2); loc4 = proc_1 (loc2);loc4 = proc_1 (loc2); printf ("fibonacci(%d) = %u\n", loc2, loc4);printf ("fibonacci(%d) = %u\n", loc2, loc4); loc3 = (loc3 + 1);loc3 = (loc3 + 1); } /* end of while */} /* end of while */ exit(0); exit(0); }}
Esempio: RECEsempio: RECmain() {main() { /* unknown */ void ebx; /* unknown */ void esi;/* unknown */ void ebx; /* unknown */ void esi; /* unknown */ void Vfffffffc;/* unknown */ void Vfffffffc; (save)"Input number: ";(save)"Input number: "; printf();printf(); (save) & Vfffffffc; (save)"%d"; scanf();(save) & Vfffffffc; (save)"%d"; scanf(); ebx = Vfffffffc;ebx = Vfffffffc; esp = esp + 12;esp = esp + 12; if(ebx > 1) {if(ebx > 1) { esi = fib(ebx - 1);esi = fib(ebx - 1); eax = fib(ebx - 2) + esi;eax = fib(ebx - 2) + esi; } else {} else { eax = ebx;eax = ebx; }} printf("fibonacci(%d) = %d\n", Vfffffffc, eax);printf("fibonacci(%d) = %d\n", Vfffffffc, eax); esp = ebp - 12;esp = ebp - 12; return(0);return(0);}}
Esempio: BoomerangEsempio: Boomerang
Esempio di codice:Esempio di codice:
int somma(int a, int b) {int somma(int a, int b) {
return a + b;return a + b;
}}
int main() {int main() {
printf("%i\n", somma(3, 4));printf("%i\n", somma(3, 4));
}}
Output di The Boomerang:Output di The Boomerang:
void main() {void main() { int local0;int local0; local0 = proc1(3, 4) ;local0 = proc1(3, 4) ; local0 = printf("%i\n", local0) ;local0 = printf("%i\n", local0) ; return ;return ;}}int proc1(int arg1, int arg2) {int proc1(int arg1, int arg2) { return arg2+arg1;return arg2+arg1;}}
Static binary translationStatic binary translation
Dynamic binary translationDynamic binary translation
Retargetable binary Retargetable binary translatortranslator
MIMIC (Ibm 1987)MIMIC (Ibm 1987)
EmulatoreEmulatore
IBM System/370 IBM System/370 IBM RT PC IBM RT PC
Tecniche di cachingTecniche di caching
Fattore di espansione 1:4 (non 1:100)Fattore di espansione 1:4 (non 1:100)
Accelerator (Tandem 1992)Accelerator (Tandem 1992)
Traduttore binarioTraduttore binario
TNS CISC TNS CISC TNS RISC TNS RISC
1% di interpretazione1% di interpretazione
Codice tradotto più veloce (5-8X)Codice tradotto più veloce (5-8X)
Flashport (AT&T 1994)Flashport (AT&T 1994)
Set generale di piattaformeSet generale di piattaforme
Intervento utenteIntervento utente
Da una settimana a sei mesi di Da una settimana a sei mesi di computazionecomputazione
Tibbit (1995)Tibbit (1995)
Motorola 68000 Motorola 68000 IBM RS/6000, AIX IBM RS/6000, AIX 3.23.2
Traduzione applicazioni real-time tra Traduzione applicazioni real-time tra processori con velocità differentiprocessori con velocità differenti
Digital (anni 90)Digital (anni 90)
VAX, MIPS, SPARC VAX, MIPS, SPARC Alpha Alpha
VEST, Freeport expressVEST, Freeport express
Ore di computazioneOre di computazione
FX!32 (Digital 1996)FX!32 (Digital 1996)
Ibrido: emulatore/binary translatorIbrido: emulatore/binary translator
WinNT(32bit) x86 WinNT(32bit) x86 WinNT(64bit) WinNT(64bit) AlphaAlpha
NJMC (1999)NJMC (1999)
New Jersey Machine-Code ToolkitNew Jersey Machine-Code Toolkit
Indipendente dalla macchinaIndipendente dalla macchina
Aiuta a scrivere parsers e debuggersAiuta a scrivere parsers e debuggers
Introduce il Register Transfer Language Introduce il Register Transfer Language (RTL)(RTL)
Disassembler, generazione Disassembler, generazione 1-21-2
Dcc: 860 linee in più giorniDcc: 860 linee in più giorni
NJMC: 208 linee in poche oreNJMC: 208 linee in poche ore
Aries (HP, 2000)Aries (HP, 2000)
PA-RISC PA-RISC ia64 ia64
allall user-level applications user-level applications
FuturoFuturo
FuturoFuturo
FuturoFuturo
FuturoFuturo
FuturoFuturoCindy ZhengCarol Thompson AriesAries
(PA-RISC/ia64)(PA-RISC/ia64)
FuturoFuturoCindy ZhengCarol Thompson AriesAries
(PA-RISC/ia64)(PA-RISC/ia64)
HP-UXWOW64
FuturoFuturo
Actually, being able to run IA-32 code onIA-64 HP-UX machines is not a primary goal for HP.Instead, it is a positive side effect of a software partitioning solution that HP is developing to allow multiple operating systems to share CPUs and other resources.
IA-64 will never execute 32-bit code as well as a dedicated processor
Bibliografia (1)Bibliografia (1)
Libri:Libri: "Compilers - Principles, Techniques and Tools", Aho, Sethi, "Compilers - Principles, Techniques and Tools", Aho, Sethi,
Ullman,Ullman, "Advanced Compiler Design & Implementation", Steven "Advanced Compiler Design & Implementation", Steven
MuchnickMuchnick "How debuggers work - Algorithms, Data Structures, and "How debuggers work - Algorithms, Data Structures, and
Architecture", Jonathan RosembergArchitecture", Jonathan Rosemberg ““A Conceptual Foundation for Software Re-Engineering”A Conceptual Foundation for Software Re-Engineering”,E. ,E.
J. ByrneJ. Byrne
Links:Links: http://www.mpowernet.com/kamal/www.fravia.orghttp://www.mpowernet.com/kamal/www.fravia.org http://www.quequero.tkhttp://www.quequero.tk http://www.program-transformation.orghttp://www.program-transformation.org
Bibliografia (2)Bibliografia (2)
““Transparent Execution, No Recompilation”Cindy ZhengTransparent Execution, No Recompilation”Cindy ZhengCarol Thompson Carol Thompson
““Running IA-32 Code on IA-64” Running IA-32 Code on IA-64” by Christophe de by Christophe de DinechinDinechin
““Binary Translation: Static, Dynamic, Retargetable?*”, C. Binary Translation: Static, Dynamic, Retargetable?*”, C. Cifuentes, V. MalhotraCifuentes, V. Malhotra