File eseguibile: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Spostato su righe differenti l'elenco a inizio pagina .
Nessun oggetto della modifica
Riga 1:
In [[informatica]], unUn '''file eseguibile''', (o semplicemente un '''eseguibile'''), in informatica, èindica un [[file]] che contiene un '''programma eseguibile''' per un [[computer]], ovvero un [[programma (informatica)|programma]] scritto in [[linguaggio macchina]] nel formato adatto: .
 
a) ad essere caricato dal [[sistema operativo]], quindi pronto per l'esecuzione;
 
b) all'[[architettura hardware]] del [[processore]] che lo esegue.
 
== Descrizione ==
Si distingue da un [[file sorgente]], che contiene un programma scritto in un [[linguaggio di programmazione ad alto livello]] il quale può essere eseguito solo utilizzando un [[interprete (informatica)|interprete]] o trasformandolo prima in eseguibile ([[codice oggetto]] + [[Libreria (software)|librerie]]) tramite un [[compilatore]], o con una combinazione di questi due strumenti.
 
==Descrizione==
In generale, gli eseguibili sono dipendenti dalla [[piattaforma (informatica)|piattaforma]]: per esempio, un file eseguibile per un sistema [[Microsoft Windows]] non è direttamente utilizzabile in sistemi [[Unix]] o [[Mac OS]] (a meno di non usare un software di [[emulatore|emulazione]]<ref name="wine"/>). Questa restrizione è dovuta a tre motivi:
* [[CPU|processori]] diversi supportano linguaggi macchina generalmente diversi e incompatibili tra di loro;
* [[Sistema operativo|sistemi operativi]] diversi usano generalmente formati diversi per i file eseguibili: ad esempio nei sistemi [[Unix]] e [[Unix-like]] è comune il formato [[Executable and linkable format|ELF]], mentre in altri sistemi si usa [[COFF]] o suoi derivati, o anche [[Mach-O]];
* per effettuare operazioni di base (per esempio l'[[input/output]]) i programmi eseguibili devono avvalersi delle [[Chiamata di sistema|primitive]] fornite dal [[sistema operativo]] del computer su cui sono eseguiti, il cui utilizzo è specifico per sistema operativo. Di conseguenza, anche a parità di processore, un file eseguibile per un particolare sistema operativo è in generale inutilizzabile su altre [[piattaforma (informatica)|piattaforme]] ovvero non è [[portabilità|portabile]]. Ad esempio, i file eseguibili per i sistemi [[Microsoft Windows]] su architettura [[x86]] non possono essere utilizzati direttamente<ref name="wine">Entro certi limiti è possibile usarli tramite [[Wine]]</ref> su sistemi [[Linux]] su architettura x86, anche se queste entrambi utilizzano la stessa classe di processori.
Di conseguenza, anche a parità di processore, un file eseguibile per un particolare sistema operativo è in generale inutilizzabile su altre [[piattaforma (informatica)|piattaforme]] ovvero non è [[portabilità|portabile]]. Ad esempio, i file eseguibili per i sistemi [[Microsoft Windows]] su architettura [[x86]] non possono essere utilizzati direttamente<ref name="wine">Entro certi limiti è possibile usarli tramite [[Wine]]</ref> su sistemi [[Linux]] su architettura x86, anche se queste entrambi utilizzano la stessa classe di processori.
 
Ogni [[sistema operativo]] ha una propria convenzione per distinguere i file eseguibili dai file che contengono dati. Alcuni sistemi utilizzano specifiche [[estensione (file)|estensioni]] (per esempio "<code>.exe</code>" in [[MS-DOS]] e [[Microsoft Windows]]); altri fanno riferimento a speciali attributi del file indicati nei suoi permessi (come il [[Permessi (Unix)|permesso]] "<code>x</code>" di esecuzione dei sistemi [[Unix]] e [[Unix-like]]) o richiedono uno speciale marcatore in una posizione prestabilita all'interno del file stesso: ancora su Unix, per esempio, congiuntamente al bit "x", viene utilizzato anche il cosiddetto ''[[magic number]]'', ovvero uno o più [[byte]] con valori prestabiliti collocati all'inizio del file che ne identificano il tipo, come nel caso dello ''[[shabang]]'' (questa idea è stata estesa ad altri sistemi operativi tra cui [[AmigaOS#Eseguibile Amiga Hunk|AmigaOS]] dove il magic number viene chiamato "magic cookie" o biscottino magico).
Line 18 ⟶ 13:
Normalmente, durante l'[[upload]] di un file eseguibile in [[RAM|memoria]], il codice macchina viene sottoposto a un processo di [[rilocazione]]. In altre parole, tutti i riferimenti a [[indirizzi di memoria]] presenti nel codice vengono opportunamente traslati in funzione dell'[[indirizzo di base]] in cui il programma viene effettivamente caricato. Questo problema è mitigato dall'uso della [[memoria virtuale]]; può tuttavia essere necessaria la rilocazione delle [[dynamic-link library|librerie dinamiche]].
 
==Altri usiUtilizzo ==
Viene realizzato in un dato formato, ed ha principalmente due scopi:
 
a) ad essere caricato dal [[sistema operativo]], quindi pronto per l'esecuzione;
 
b) all'[[architettura hardware]] del [[processore]] che lo esegue.
 
Il termine ''eseguibile'' viene talvolta utilizzato in senso esteso per riferirsi anche a tutti quei programmi che possono essere eseguiti senza una previa traduzione esplicita (compilazione) in linguaggio macchina. In questo caso esso potrebbe essere applicato anche a:
* [[script]] scritti nel linguaggio della [[Shell (informatica)|shell testuale]] del sistema operativo, per esempio [[Bash]] o la [[Korn shell]] per i sistemi [[Unix]] e [[Unix-like]], o i cosiddetti [[file batch]] per MS-DOS e Microsoft Windows;
Line 33 ⟶ 34:
* [[Codice sorgente]]
* [[Codice oggetto]]
* [[File]]
* [[File sorgente]]
* [[Macchina virtuale]]
* [[Compilatore]]
Line 38 ⟶ 41:
* [[Processore]]
* [[Exe packer]]
 
{{portale|informatica}}
 
[[Categoria:Formati di file eseguibili]]