binary translation

39
Binary Translation Binary Translation

Upload: karsen

Post on 14-Jan-2016

63 views

Category:

Documents


1 download

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

Page 1: Binary Translation

Binary TranslationBinary Translation

Page 2: Binary Translation

Cambio di architetturaCambio di architettura

Page 3: Binary Translation

ProblemiProblemi

E il vecchio software?

Page 4: Binary Translation

Costo di produzione softwareCosto di produzione software(tempo e denaro)(tempo e denaro)

Bugs

Manutenzione

Aggiornamento

Page 5: Binary Translation

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

Page 6: Binary Translation

Binary translationBinary translation

Nessuna ricompilazioneNessuna ricompilazione

Page 7: Binary Translation

Binary translationBinary translation

Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente

Page 8: Binary Translation

Binary translationBinary translation

Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo

Page 9: Binary Translation

Binary translationBinary translation

Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione

Page 10: Binary Translation

Binary translationBinary translation

Nessuna ricompilazioneNessuna ricompilazione Indipendenza dal sorgenteIndipendenza dal sorgente Risparmio di tempoRisparmio di tempo OttimizzazioneOttimizzazione Risparmio sui testRisparmio sui test

Page 11: Binary Translation

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

Page 12: Binary Translation

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

Page 13: Binary Translation

DifficoltàDifficoltà

Simili a disassembler e decompilersSimili a disassembler e decompilers

Problema della terminazioneProblema della terminazione

Problema nella staticitàProblema nella staticità

Page 14: Binary Translation

DecompilationDecompilation

Page 15: Binary Translation

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

Page 16: Binary Translation

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); }}

Page 17: Binary Translation

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);}}

Page 18: Binary Translation

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;}}

Page 19: Binary Translation

Static binary translationStatic binary translation

Page 20: Binary Translation

Dynamic binary translationDynamic binary translation

Page 21: Binary Translation

Retargetable binary Retargetable binary translatortranslator

Page 22: Binary Translation

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)

Page 23: Binary Translation

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)

Page 24: Binary Translation

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

Page 25: Binary Translation

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

Page 26: Binary Translation

Digital (anni 90)Digital (anni 90)

VAX, MIPS, SPARC VAX, MIPS, SPARC Alpha Alpha

VEST, Freeport expressVEST, Freeport express

Ore di computazioneOre di computazione

Page 27: Binary Translation

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

Page 28: Binary Translation

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)

Page 29: Binary Translation

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

Page 30: Binary Translation

Aries (HP, 2000)Aries (HP, 2000)

PA-RISC PA-RISC ia64 ia64

allall user-level applications user-level applications

Page 31: Binary Translation

FuturoFuturo

Page 32: Binary Translation

FuturoFuturo

Page 33: Binary Translation

FuturoFuturo

Page 34: Binary Translation

FuturoFuturo

Page 35: Binary Translation

FuturoFuturoCindy ZhengCarol Thompson AriesAries

(PA-RISC/ia64)(PA-RISC/ia64)

Page 36: Binary Translation

FuturoFuturoCindy ZhengCarol Thompson AriesAries

(PA-RISC/ia64)(PA-RISC/ia64)

HP-UXWOW64

Page 37: Binary Translation

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

Page 38: Binary Translation

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

Page 39: Binary Translation

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