binary translation

Post on 14-Jan-2016

82 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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

top related