Binary Translation. Cambio di architettura Problemi E il vecchio software?

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Uso avanzato di C.
Ambiente Java.
Digital FX!32 Conte Davide Crivello Emanuele Ferrando Elisa.
Software di base: Linguaggi di Programmazione
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Sviluppo di programmi strutturati
PUNTATORI Introduzione
Definizione e tipi di implementazione
Linguaggi di Programmazione e compilatori
Type Checking (1° parte)
Massa Laura Mela Enrica
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Introduzione al linguaggio C
I Linguaggi Di Luca Brugnone 13/11/2007
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Distributed Object Computing
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma La Sapienza.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Corso di Informatica Applicata - © 2005 Saverio De Vito Corso di Informatica Applicata Esercitazione Università degli studi di Cassino Corso di Laurea.
Processi, Thread, Multitasking, Multithreading. Ingredienti 1 CPU 1 Memoria RAM Tanti programmi che condividono la stessa memoria Esigenza di far girare.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le funzioni.
Reverse engineering.
Java Contardi Carlo A.S. 2008/09.
Biologia Computazionale
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Massimo Comun Divisore
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
FESR Consorzio COMETA Pier Paolo CORSO Giuseppe CASTGLIA Marco CIPOLLA Industry Day Catania, 30 Giugno 2011 Commercial applications.
la traduzione dei programmi
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
WP4 – Software Infrastructures. How it was Overall goal “The outcome of WP4 is the design, implementation and evaluation of software components that will.
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Calcolatori Elettronici Il Processore
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
CALCOLATORI ELETTRONICI
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Architettura di un calcolatore e linguaggio macchina.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Fabio Casale, Matteo Sosso
Il software Claudia Raibulet
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
La gestione snella dei progetti Social Perché il lato pesante non può vincere sulla forza agile Ernesto Amato Project Manager & Agile Evangelist.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Transcript della presentazione:

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 Compilare il vecchio sorgente con nuovi compilatori Emulazione hardware Emulazione hardware Emulazione/interpretazione software Emulazione/interpretazione software Binary translation Binary translation

Binary translation Nessuna ricompilazione Nessuna ricompilazione

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente Risparmio di tempo Risparmio di tempo

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente Risparmio di tempo Risparmio di tempo Ottimizzazione Ottimizzazione

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente Risparmio di tempo Risparmio di tempo Ottimizzazione Ottimizzazione Risparmio sui test Risparmio sui test

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente Risparmio di tempo Risparmio di tempo Ottimizzazione Ottimizzazione Risparmio sui test Risparmio sui test Nessun disagio per gli utenti Nessun disagio per gli utenti

Binary translation Nessuna ricompilazione Nessuna ricompilazione Indipendenza dal sorgente Indipendenza dal sorgente Risparmio di tempo Risparmio di tempo Ottimizzazione Ottimizzazione Risparmio sui test Risparmio sui test Nessun disagio per gli utenti Nessun disagio per gli utenti Distribuzione multipiattaforma Distribuzione multipiattaforma

Difficoltà Simili a disassembler e decompilers Simili a disassembler e decompilers Problema della terminazione Problema della terminazione Problema nella staticità Problema nella staticità

Decompilation

Decompilazione (MikeVanEmmerik ) ProblemaDecompilatoreDecompilatore assembler Disassemblatore ideale Decompilato re bytecode Separare codice e dati sinosino Separare codici e costanti sinosifacile Recuperare parametri ecc. si no Analisi dei tipisi nosolo locali Dichiarare datisi banale Fondere istruzioni si nosi Salti strutturati, condizionali si nosi

Esempio: dcc void main () { 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: REC 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: Boomerang Esempio di codice: int somma(int a, int b) { return a + b; return a + b;} int main() { printf("%i\n", somma(3, 4)); printf("%i\n", somma(3, 4));} Output di The Boomerang: 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) { return arg2+arg1; return arg2+arg1;}

Static binary translation

Dynamic binary translation

Retargetable binary translator

MIMIC (Ibm 1987) Emulatore Emulatore IBM System/370  IBM RT PC IBM System/370  IBM RT PC Tecniche di caching Tecniche di caching Fattore di espansione 1:4 (non 1:100) Fattore di espansione 1:4 (non 1:100)

Accelerator (Tandem 1992) Traduttore binario Traduttore binario TNS CISC  TNS RISC TNS CISC  TNS RISC 1% di interpretazione 1% di interpretazione Codice tradotto più veloce (5-8X) Codice tradotto più veloce (5-8X)

Flashport (AT&T 1994) Set generale di piattaforme Set generale di piattaforme Intervento utente Intervento utente Da una settimana a sei mesi di computazione Da una settimana a sei mesi di computazione

Tibbit (1995) Motorola  IBM RS/6000, AIX 3.2 Motorola  IBM RS/6000, AIX 3.2 Traduzione applicazioni real-time tra processori con velocità differenti Traduzione applicazioni real-time tra processori con velocità differenti

Digital (anni 90) VAX, MIPS, SPARC  Alpha VAX, MIPS, SPARC  Alpha VEST, Freeport express VEST, Freeport express Ore di computazione Ore di computazione

FX!32 (Digital 1996) Ibrido: emulatore/binary translator Ibrido: emulatore/binary translator WinNT(32bit) x86  WinNT(64bit) Alpha WinNT(32bit) x86  WinNT(64bit) Alpha

NJMC (1999) New Jersey Machine-Code Toolkit New Jersey Machine-Code Toolkit Indipendente dalla macchina Indipendente dalla macchina Aiuta a scrivere parsers e debuggers Aiuta a scrivere parsers e debuggers Introduce il Register Transfer Language (RTL) Introduce il Register Transfer Language (RTL)

Disassembler, generazione 1-2 Dcc: 860 linee in più giorni Dcc: 860 linee in più giorni NJMC: 208 linee in poche ore NJMC: 208 linee in poche ore

Aries (HP, 2000) PA-RISC  ia64 PA-RISC  ia64 all user-level applications all user-level applications

Futuro

Futuro

Futuro

Futuro

Futuro Cindy Zheng Carol Thompson Aries (PA-RISC/ia64)

Futuro Cindy Zheng Carol Thompson Aries (PA-RISC/ia64) HP-UX WOW64

Futuro Actually, being able to run IA-32 code on IA-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) Libri: "Compilers - Principles, Techniques and Tools", Aho, Sethi, Ullman, "Compilers - Principles, Techniques and Tools", Aho, Sethi, Ullman, "Advanced Compiler Design & Implementation", Steven Muchnick "Advanced Compiler Design & Implementation", Steven Muchnick "How debuggers work - Algorithms, Data Structures, and Architecture", Jonathan Rosemberg "How debuggers work - Algorithms, Data Structures, and Architecture", Jonathan Rosemberg “A Conceptual Foundation for Software Re-Engineering”,E. J. Byrne “A Conceptual Foundation for Software Re-Engineering”,E. J. ByrneLinks:

Bibliografia (2) “Transparent Execution, No Recompilation”Cindy Zheng Carol Thompson “Transparent Execution, No Recompilation”Cindy Zheng Carol Thompson “Running IA-32 Code on IA-64” by Christophe de Dinechin “Running IA-32 Code on IA-64” by Christophe de Dinechin “Binary Translation: Static, Dynamic, Retargetable?*”, C. Cifuentes, V. Malhotra “Binary Translation: Static, Dynamic, Retargetable?*”, C. Cifuentes, V. Malhotra