Cosa contiene effettivamente l'eseguibile? .. Contiene istruzioni per l'elaborazione sotto forma di Opcode e Operandi? In tal caso, perché abbiamo diversi eseguibili per diversi sistemi operativi?Cosa contiene effettivamente il file eseguibile?
risposta
Sì, codice sotto forma di opcode e operandi e dati ovviamente. Qualsiasi cosa tu voglia fare che coinvolge il sistema operativo in qualche modo dipende dal sistema operativo, non dalla CPU. Ecco perché hai bisogno di programmi diversi per diversi sistemi operativi. L'apertura di una finestra in Windows non avviene con la stessa sequenza di istruzioni di Linux e così via.
Come unwind nella sua risposta, un file eseguibile contiene chiamate alle routine nel sistema operativo.
Sarebbe estremamente inefficiente per un file eseguibile tentare di implementare funzioni già fornite dal sistema operativo (ad esempio, scrivere su disco, accettare input), quindi si fa un uso pesante delle chiamate alle funzioni del sistema operativo.
diversi sistemi operativi forniscono funzioni che fanno cose simili, ma i dettagli di come per chiamare le funzioni (e dove sono) possono essere diverse.
Quindi, a parte le principali differenze del tipo di processore, gli eseguibili scritti per un sistema operativo non funzionano con un altro.
Per eseguire qualsiasi tipo di I/O, un eseguibile deve interfacciarsi con il sistema operativo mediante chiamate sys. in Windows queste sono chiamate all'API Win32 e su linux/unit si tratta principalmente di chiamate posix.
Inoltre, il formato del file eseguibile differisce dal sistema operativo nello stesso modo in cui un file PNG differisce da un file GIF. i dati sono ordinati in modo diverso e ci sono diverse intestazioni e sottotitoli.
controllare questi collegamenti anche:
Processori capire i programmi in termini di codici operativi - in modo che le Intution su eseguibili contenenti codici operativi è corretto, e si indovinato che qualsiasi eseguibile deve avere codici operativi e gli operandi per l'esecuzione del programma su un processore.
Tuttavia, i programmi vengono eseguiti principalmente con l'aiuto di sistemi operativi (è possibile scrivere programmi che non utilizzano un sistema operativo da eseguire, ma sarebbe un lavoro non necessario) - che forniscono le astrazioni in cima all'hardware che il i programmi possono usare. Il sistema operativo è responsabile della creazione di un "contesto" per qualsiasi programma da eseguire, ovvero fornisce al programma la memoria di cui ha bisogno, fornisce librerie di carattere generale che il programma può utilizzare per fare cose comuni come scrivere su file, stampare su console, ecc.
Tuttavia, per impostare il contesto per il programma (fornire memoria, caricare i suoi dati, impostare uno stack per esso), il sistema operativo deve leggere il file eseguibile di un programma e deve conoscere alcune cose sul programma come come i dati che il programma si aspetta di utilizzare, la dimensione di tali dati, i valori iniziali memorizzati in quella regione di dati, l'elenco di opcode che compongono il programma (chiamato anche area di testo di un processo), le loro dimensioni ecc. Tutto questi dati e molto altro (informazioni di debug, dati di sola lettura come stringhe codificate nel programma, tabelle dei simboli, ecc.) sono memorizzati nel file eseguibile.Ogni sistema operativo comprende un formato diverso di questo file eseguibile, poiché si aspettano che tutte queste informazioni vengano archiviate nell'eseguibile in diversi modi. Controlla i link forniti da Groo.
Un paio di formati che sono stati utilizzati per archiviare informazioni in un file eseguibile sono ELF e COFF su sistemi UNIX e PE su Windows.
P.S. - Non tutti i programmi richiedono formati eseguibili. Cerca i bootloader su Google. Si tratta di programmi speciali che occupano il primo settore di una partizione avviabile sul disco rigido e vengono utilizzati per caricare il sistema operativo stesso.
Un file eseguibile contiene diversi blob di dati e istruzioni su come i dati devono essere caricati in memoria. Alcune di queste sezioni contengono codice macchina che può essere eseguito. Altre sezioni contengono dati di programma, risorse, informazioni sulla ricollocazione, informazioni sull'importazione, ecc.
- 1. Cosa fanno effettivamente i file pdb?
- 2. ITMS-90668 - Eseguibile Bundle non valido. Il file eseguibile contiene codice binario che incompleta
- 3. Cosa fa effettivamente "__COMPAT_LAYER"?
- 4. Cosa fa mysqli_store_result() Effettivamente?
- 5. Cosa fa effettivamente addChildViewController?
- 6. Cosa restituisce effettivamente jquery $?
- 7. Cosa fa effettivamente Process.Dispose()?
- 8. Perché il file binario eseguibile contiene percorsi di file di intestazione inclusi?
- 9. Cosa fa effettivamente session_register_shutdown?
- 10. Cosa fa effettivamente il metodo Dns.GetHostEntry (String)?
- 11. Cosa contiene il pacchetto com.sun?
- 12. Che cosa misura effettivamente GetTickCount()?
- 13. Cosa fa effettivamente XCode 'Clean'?
- 14. Che cosa contiene un file oggetto?
- 15. Che cosa deve fare effettivamente OOttimizeForNetworkUse?
- 16. Che cosa fa effettivamente ifstream :: rdbuf()?
- 17. Cosa causa effettivamente la chiamata di Session_Start?
- 18. Cosa hanno effettivamente fatto i glutswapbuffer?
- 19. Che cosa effettivamente gestisce il disegno dello sfondo di Windows?
- 20. Cosa fa effettivamente il controllo del gestore di script?
- 21. cosa fa effettivamente l'istruzione di assemblaggio 'db'?
- 22. Come trovo il nome file eseguibile corrente?
- 23. Crea il servizio Windows dal file eseguibile
- 24. Cosa eval in Base64 codificato $ _POST [ 'e'] variabile effettivamente fare?
- 25. Cosa GCC __attribute __ ((modalità (XX)) effettivamente fare
- 26. Math.floor (Math.random()) cosa fa effettivamente +1?
- 27. Cosa JVM bandiera CMSClassUnloadingEnabled effettivamente fare?
- 28. Apache Camel: cosa viene effettivamente instradato?
- 29. Cosa è effettivamente animabile in UILabel?
- 30. Nome metodo vuoto, cosa fa effettivamente?
I file eseguibili di volte contengono metadati sul programma stesso che il sistema operativo può utilizzare per alcune cose. Penso che i file '.com' fossero l'ultimo residuo dei programmi eseguibili che erano solo codice e dati in cui il sistema operativo avrebbe solo caricato il file in memoria, puntare l'IP e lasciarlo funzionare :-) – Joey