INTERFACCIAMENTO ASSEMBLY - C++

Slides:



Advertisements
Presentazioni simili
Ing. Pasquale Zambrotta
Advertisements

Introduzione al linguaggio C++
I Linguaggi di programmazione
INFORMATICA Altre Istruzioni di I/O
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Code::Blocks Ambiente di sviluppo.
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Code::Blocks Ambiente di sviluppo.
Dalla scrittura all’esecuzione
Linee guida per la programmazione
Procedure In assembler.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
PHP.
I linguaggi di programmazione
1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Dr. Francesco Fabozzi Corso di Informatica
Anno accademico Il preprocessore del linguaggio C.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Concetti di base: header file, funzione main(),set caratteri C++, token, operatori, espressioni etc. Flusso di controllo, cicli, costrutti.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Laboratorio di informatica: ASSEMBLER
Process synchronization
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Unità Didattica 2 I Linguaggi di Programmazione
7) Creazione di un programma eseguibile
Primi Elementi di Programmazione in C++
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
Le funzioni.
Espressioni condizionali
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Ambienti di programmazione Stefano Cagnoni e Monica Mordonini.
Programmazione modulare nel linguaggio C
Programmazione Avanzata
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Programmazione in Java
JavaScript 3. Commenti in JS Come in altri linguaggi di programmazione anche javascript offre la possibilità di inserire i commenti all'interno delle.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Lo sviluppo top down Le funzioni
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Gena - Applicata - 05/061 Java: javac e java Per compilare una classe: > javac NomeClasse.java  NomeClasse.class javac = invocazione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2014 Marco D. Santambrogio – Gianluca Durelli -
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Programmazione in linguaggio C
Calcolatori Elettronici Assemblatore, Linker e Loader
Dal problema all’ algoritmo
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Programmazione Assembly
Scrivere e compilare programmi
Lezione X Laboratorio di Programmazione. Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi.
Concetti Fondamentali sulla Programmazione
1 Il preprocessore. 2 Viene invocato dal gcc prima della compilazione vera e propria ( cpp ) Esegue delle manipolazioni testuali sul file –sostituisce.
Esercizi.
1 Java primo contatto Quando le classi fanno la differenza …
Laboratorio di Linguaggi lezione XI Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
Transcript della presentazione:

INTERFACCIAMENTO ASSEMBLY - C++ Prof. Marco Solarino

IN COSA CONSISTE Interfacciare l'Assembly con un linguaggio ad alto livello significa utilizzare del codice scritto in linguaggio Assembly all'interno di un'applicazione realizzata con l'altro linguaggio (nel nostro caso il C++).

Funzioni particolari Velocità di esecuzione Compattezza del codice A COSA SERVE Interfacciare l'Assembly con un linguaggio ad alto livello può essere utile per ottenere: Funzioni particolari Velocità di esecuzione Compattezza del codice

Esistono due modalità per realizzare l'interfacciamento Assembly-C++: COME SI REALIZZA Esistono due modalità per realizzare l'interfacciamento Assembly-C++: Interfacciamento interno Interfacciamento esterno

INTERFACCIAMENTO INTERNO Il TurboC++ contiene un assemblatore interno (il BASM, Borland Assembler) che offre un sottoinsieme delle potenzialità del TASM (Turbo Assembler) e ci consente di inserire istruzioni in Assembly nel sorgente scritto in C++ (Assembly inline).

INTERFACCIAMENTO INTERNO Come si fa nel TurboC++ Per invocare il BASM e tradurre l'Assembly si antepone la direttiva asm alle istruzioni interessate: asm MOV AX,1000 Se le istruzioni Assembly sono più di una: asm { Istruzioni Assembly }

INTERFACCIAMENTO INTERNO Attenzione! Dopo la direttiva asm vale come terminazione dell'istruzione anche l'a capo oltre al punto e virgola, quindi l'eventuale parentesi graffa va aperta sulla stessa riga di asm.

INTERFACCIAMENTO INTERNO Limiti Alcuni compilatori non consentono di usare le etichette nell'Assembly inline Non si possono usare macro e procedure In pratica l'interfacciamento interno va usato in casi molto semplici, nei quali si debbano usare poche istruzioni Assembly.

INTERFACCIAMENTO ESTERNO I sorgenti sono almeno due Sorgente *.CPP Eseguibile *.EXE ? Sorgente *.ASM

INTERFACCIAMENTO ESTERNO Generico Compilatore (TurboC++) Sorgente *.ASM *.CPP Oggetto *.OBJ Eseguibile *.EXE LINKER (TLINK) Assemblatore (TASM) Oggetto *.OBJ

INTERFACCIAMENTO ESTERNO Nel TurboC++ File di progetto *.prj Eseguibile *.EXE Sorgente *.ASM *.CPP

INTERFACCIAMENTO ESTERNO Problemi Far capire al compilatore C++ che la funzione Assembly non è nel sorgente *.cpp Rendere visibile al linker la funzione Assembly

INTERFACCIAMENTO ESTERNO Cosa c’è nel cpp Prima di utilizzarla, facciamo capire al C++ che la funzione Assembly è esterna : extern “C” {tipo far nome(parametri);... tipo far nome(parametri);} Per esempio: extern “C” {int far doppio(int x);}

INTERFACCIAMENTO ESTERNO Cosa c’è nell’asm (1) Al nome della funzione va anteposto ‘_’: …o lo facciamo noi _ doppio proc far …o lo facciamo fare al TASM .model small,C

INTERFACCIAMENTO ESTERNO Cosa c’è nell’asm (2) Rendiamo visibile (pubblica) la funzione al linker PUBLIC doppio se abbiamo usato , altrimenti .model small,C PUBLIC _doppio

INTERFACCIAMENTO ESTERNO Cosa non c’è nell’asm Siccome i segmenti dati e stack vengono definiti dal C++, il sorgente *.asm non dovrà contenere le direttive .data e .stack. Dato che il main della nostra applicazione è nel sorgente *.cpp, il sorgente *.asm non dovrà contenere le macro .startup e .exit 0.