Dubbio sugli eseguibili e sul linguaggio macchina
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Dubbio sugli eseguibili e sul linguaggio macchina
Buon giorno,
Mi piacerebbe avere un chiarimento relativo agli eseguibili (file .exe).
Quando un sorgente viene compilato si dice "che viene tradotto in linguaggio macchina" (e messo dentro un file .exe).
Ma i file .exe non possono contenere linguaggio macchina PURO altrimenti funzionerebbero anche su linux (visto che l'hardware-windows e l'hardware-linux è praticamente lo stesso) mentre invece come tutti sanno funzionano solo su windows.
Volevo solo sapere se, secondo voi, quello che ho detto sopra è giusto (magari argomentate).
Grazie in anticipo.
EDIT : cioè quello che intendo dire è che, secondo me, l'affermazione "gli eseguibili contengono il linguaggio macchina" è una semplificazione che a voler proprio essere pignoli non è esatta.
EDIT2: grazie mille per gli interventi. Comunque siete sicuri di aver capito ciò che intendo?
forse detto così si capisce meglio: il linguaggio macchina per definizione non dovrebbe essere a priscindere dal s.o.? come avete detto anche voi gli .exe sono legati al s.o. su cui girano, -->quindi quello che contengono non è linguaggio macchina (almeno non in senso stretto).
Mi piacerebbe avere un chiarimento relativo agli eseguibili (file .exe).
Quando un sorgente viene compilato si dice "che viene tradotto in linguaggio macchina" (e messo dentro un file .exe).
Ma i file .exe non possono contenere linguaggio macchina PURO altrimenti funzionerebbero anche su linux (visto che l'hardware-windows e l'hardware-linux è praticamente lo stesso) mentre invece come tutti sanno funzionano solo su windows.
Volevo solo sapere se, secondo voi, quello che ho detto sopra è giusto (magari argomentate).
Grazie in anticipo.
EDIT : cioè quello che intendo dire è che, secondo me, l'affermazione "gli eseguibili contengono il linguaggio macchina" è una semplificazione che a voler proprio essere pignoli non è esatta.
EDIT2: grazie mille per gli interventi. Comunque siete sicuri di aver capito ciò che intendo?
forse detto così si capisce meglio: il linguaggio macchina per definizione non dovrebbe essere a priscindere dal s.o.? come avete detto anche voi gli .exe sono legati al s.o. su cui girano, -->quindi quello che contengono non è linguaggio macchina (almeno non in senso stretto).
Ultima modifica di gameplay_extreme il 12/02/2011, 14:16, modificato 1 volta in totale.
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Detta in maniera semplice il set di istruzioni in formato binario fornito dall'exe per il kernel linux non significa nulla anche se hanno lo stesso processore e quindi anche se utilizzano le stesse istruzioni supportate da quel processore perchè comunque richiameranno funzioni del sistema operativo non trovandole.
La definizione di "linguaggio macchina" quindi secondo me non è scorretta perchè in fondo contiene le istruzioni secondo il linguaggio del processore. La definizione di "linguaggio macchina puro" invece non dovrebbe avere senso.
Potrei aver sparato qualche stupidaggine.
La definizione di "linguaggio macchina" quindi secondo me non è scorretta perchè in fondo contiene le istruzioni secondo il linguaggio del processore. La definizione di "linguaggio macchina puro" invece non dovrebbe avere senso.
Potrei aver sparato qualche stupidaggine.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
--edit: a causa del baron-post son stato preceduto...
invece dire che l'exe contiene il linguaggio macchie è esattamente preciso.
certo, può contenere altro, in genere dati (non istruzioni).
Ad esempio ci può essere il programma vero e proprio (istruzioni) e accodato in fondo i dati di un immagine. Poi le istruzioni accedono ai dati e li utilizzano (magari mostrando l'immagine).
MA l'exe è la sequenza di codici di linguaggio macchina.
Perchè un eseguibile non va su un altro s.o.?
I sistemi operativi non sono altro (semplificando) che una collezione di istruzioni pronte per essere usate e rese disponibili ai programmi.
Se io scrivo un programma senza un sistema operativo (si fa, ad esempio per i microcontrollori, i primissimi cellulari, elettronica di consumo di bassissimo costo e grandissima diffusione tipo gli orologi) devo gestirmi tutto l'hw.
Se l'hw è semplice la cosa è fattibile.
Su un pc significa che dovresi scrivere come gestire il monitor, l'accesso al disco (a livello di comandi come: "alza la testina", "ruota il disco", "abbassa la testina", "leggi il dato", "invialo al processore" ... )
Le stesse cose per altre periferiche come: tastiera, scheda di rete...
E questo andrebbe ripetuto PER OGNI eseguibile che faccio.
Per questo è nata l'idea del sistema operativo.
Un "programmone" che viene eseguito come base e si prende carico di queste operazioni basilari e comuni. (il concetto è cambiato: pensate quello che offriva il dos - senza programmi specific non visualizzava neppure le immagini - e a quello che offre un s.o. moderno).
L'exe scritto dall'utente poi non fa altro che fare chiamate a funzioni messe a disposizione dal sistema operativo.
il traduttore da linguaggio a exe (compilatore) deve sapere per quale s.o. deve tradurre, e ovviamente deve conoscere come si fanno a richiamare queste funzioni sul s.o.
Ad esempio il linguaggio di programmaizone potrebbe essere:
input= leggi_input_da_tastiera();
il compilatore che lo compila per windows sa che deve chiamare una funzione X che windows mette a disposizione che contiene gli ultimi 100 caratteri premuti e lo traduce in quel modo.
Quindi il programmatore deve assicurare che input possa contenere 100 caratteri,
Magari per linux invece chiama la funzione Y che restituisce gli ultimi 50 caratteri. In questo caso il programmatore lo deve sapere, e nel suo software considerare che non può tornare indietro al 51esimo carattere.
Se uno scrivesse un programma senza nessun riferimento a nessuna funzionalità del S.o. avrebbe scritto un programma universale (che va su quell'hw).
Però non sarebbe definito programma, ma a sua volta una sorta di sistema operativo (magari minimalista).
invece dire che l'exe contiene il linguaggio macchie è esattamente preciso.
certo, può contenere altro, in genere dati (non istruzioni).
Ad esempio ci può essere il programma vero e proprio (istruzioni) e accodato in fondo i dati di un immagine. Poi le istruzioni accedono ai dati e li utilizzano (magari mostrando l'immagine).
MA l'exe è la sequenza di codici di linguaggio macchina.
Perchè un eseguibile non va su un altro s.o.?
I sistemi operativi non sono altro (semplificando) che una collezione di istruzioni pronte per essere usate e rese disponibili ai programmi.
Se io scrivo un programma senza un sistema operativo (si fa, ad esempio per i microcontrollori, i primissimi cellulari, elettronica di consumo di bassissimo costo e grandissima diffusione tipo gli orologi) devo gestirmi tutto l'hw.
Se l'hw è semplice la cosa è fattibile.
Su un pc significa che dovresi scrivere come gestire il monitor, l'accesso al disco (a livello di comandi come: "alza la testina", "ruota il disco", "abbassa la testina", "leggi il dato", "invialo al processore" ... )
Le stesse cose per altre periferiche come: tastiera, scheda di rete...
E questo andrebbe ripetuto PER OGNI eseguibile che faccio.
Per questo è nata l'idea del sistema operativo.
Un "programmone" che viene eseguito come base e si prende carico di queste operazioni basilari e comuni. (il concetto è cambiato: pensate quello che offriva il dos - senza programmi specific non visualizzava neppure le immagini - e a quello che offre un s.o. moderno).
L'exe scritto dall'utente poi non fa altro che fare chiamate a funzioni messe a disposizione dal sistema operativo.
il traduttore da linguaggio a exe (compilatore) deve sapere per quale s.o. deve tradurre, e ovviamente deve conoscere come si fanno a richiamare queste funzioni sul s.o.
Ad esempio il linguaggio di programmaizone potrebbe essere:
input= leggi_input_da_tastiera();
il compilatore che lo compila per windows sa che deve chiamare una funzione X che windows mette a disposizione che contiene gli ultimi 100 caratteri premuti e lo traduce in quel modo.
Quindi il programmatore deve assicurare che input possa contenere 100 caratteri,
Magari per linux invece chiama la funzione Y che restituisce gli ultimi 50 caratteri. In questo caso il programmatore lo deve sapere, e nel suo software considerare che non può tornare indietro al 51esimo carattere.
Se uno scrivesse un programma senza nessun riferimento a nessuna funzionalità del S.o. avrebbe scritto un programma universale (che va su quell'hw).
Però non sarebbe definito programma, ma a sua volta una sorta di sistema operativo (magari minimalista).
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Mi ero sempre chiesto anche io questa cosa. Grazie baron
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Tante grazie per gli interventi. Comunque ho aggiunto nel primo post un edit2 dove mi spiego in altro modo (non sono proprio sicuro che abbiate capito ciò che intendevo dire).
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
- Stavros
- GMI Advanced
- Messaggi: 1914
- Iscritto il: 24/02/2010, 20:03
- Specialità: PixelArt - Grafica
- Uso: GM:Studio 2
- Località: QDMA12
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Quotone per Baron, vecchio saggio
E' sempre linguaggio macchina ma il modo in cui viene interpretato dipende dal Sistema Operativo. E chiaramente ci sono delle differenze tra sistemi Unix Like e Windows. Le istruzioni (calcoli che fa la CPU tramite ALU e registri) restituiscono un output che senza un corretto interprete darebbero risultati insignificanti. Le istruzioni sono comunque specifiche del sistema su cui è stato compilato l'.exe e perciò la corretta interpretazione dei risultati dell'esecuzione del linguaggio macchina dipende strettamente dal SO usato.
E' sempre linguaggio macchina ma il modo in cui viene interpretato dipende dal Sistema Operativo. E chiaramente ci sono delle differenze tra sistemi Unix Like e Windows. Le istruzioni (calcoli che fa la CPU tramite ALU e registri) restituiscono un output che senza un corretto interprete darebbero risultati insignificanti. Le istruzioni sono comunque specifiche del sistema su cui è stato compilato l'.exe e perciò la corretta interpretazione dei risultati dell'esecuzione del linguaggio macchina dipende strettamente dal SO usato.
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Linguaggio macchina = set di istruzioni e dati eseguiti dalla cpu.
Incrementare tal registro della cpu di tot su Windows porta ad una cosa, su Linux ad un'altra.
Detto proprio in maniera terra-terra.
Preceduto da Stavros.
Incrementare tal registro della cpu di tot su Windows porta ad una cosa, su Linux ad un'altra.
Detto proprio in maniera terra-terra.
Preceduto da Stavros.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Quindi state dicendo che in un certo senso ho ragione?
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
- Stavros
- GMI Advanced
- Messaggi: 1914
- Iscritto il: 24/02/2010, 20:03
- Specialità: PixelArt - Grafica
- Uso: GM:Studio 2
- Località: QDMA12
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
No, tu stai dicendo che gli eseguibili non contengono linguaggio macchina.
Invece che tu sia su Windows o Unix Like l'.exe rimane lo stesso, il codice macchina rimane lo stesso. E' il modo in cui viene interpretato/renderizzato che cambia, dando risultati differenti.
EDIT: se l'.exe è compilato su Windows, le istruzioni che contiene fanno chiaramente riferimento a Windows e non puoi pensare di ottenere qualcosa su Unix. Viceversa se compili su Unix. Non può essere intercambiabile a meno che non sia scritto in un linguaggio interpretato come Java o Python (Python :Q______)
Invece che tu sia su Windows o Unix Like l'.exe rimane lo stesso, il codice macchina rimane lo stesso. E' il modo in cui viene interpretato/renderizzato che cambia, dando risultati differenti.
EDIT: se l'.exe è compilato su Windows, le istruzioni che contiene fanno chiaramente riferimento a Windows e non puoi pensare di ottenere qualcosa su Unix. Viceversa se compili su Unix. Non può essere intercambiabile a meno che non sia scritto in un linguaggio interpretato come Java o Python (Python :Q______)
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
ti faccio un esempio molto pratico...
supponiamo che un exe sotto FakeOS richieda il contenuto di un file (chiede al sistema operativo di leggerlo)
potrebbe essere:
Es:1
MOV 1000 registroX // sposta il contenuto del byte mille sul registro della cpu.
SUB 0x16 // attiva la subrouting contenuta al byte 16 (in esadecimale). In questo punto della memoria FakeOS tiene
//ha una subroutine che legge un file. Il file si determina in funzione del contenuto del registro X
Es:2
Maz per diletto inventa il suo GMIos85 e lo rilascia opensource.
Io me lo installo e studio le specifiche. e per aprire un file "puntato" dalla cella di memoria 1000 scorpro che devo fare
MOV 1000 registroY // sposta il contenuto del byte mille sul registro della cpu.
MOV 0x1 registroX // sposta il numero 1 sul registro della cpu.
SUB 0x22 // attiva la subrouting contenuta al byte 22 (in esadecimale). In questo punto della memoria FakeOS tiene
//ha una subroutine che legge un file. Il file si determina in funzione del contenuto del registro Y. Il contenuto del registro X dice se devo cancellare un file (valore diverso da 1) oppure leggerlo (valore 1).
ES:3
Per diletto Stavros lancia un eseguibile di FakeOS da GMIos85. Questo file è il primo esempio.
Il buon maz per diletto ha messo una subroutine al byte 16 che formatta l'hard disk.
Stavros si ritrova con il suo HD formattato e come risultato toglie il saluto a Maz.
Ovviamente l'esempio 3 è per ridere.
Con una buona probabilità le chiamate al s.o. differente daranno il risultato imprevedibili, con verosimili crash dell'applicazione, o addirittura in casi sfortunati del sistema operativo stesso (vedi esempio 3):
Come vedi però le istruzioni (linguaggio macchina) sono le STESSE. Io ho usato un menomonico pseudo assembly, ma dentro l'eseguibile c'è il codice binario che viene dato in pasto alla CPU (magari MOV sarebbe 00000101).
Più chiaro ora?
--edit
@stavros: ma il java non è compilato per la virtual machine? Vale a dire una cpu non fisica con il suo set di istruzioni, che poi viene sostanzialmente simulata dal software java virtual machine?
Quindi in teoria: io compilo in java, poi la java virutal machine interpreta il codice bytecode (se non sbaglio è il nome che viene dato all' "eseguibile" compilato in javsa.
Invoco qualche virtuoso del Java
supponiamo che un exe sotto FakeOS richieda il contenuto di un file (chiede al sistema operativo di leggerlo)
potrebbe essere:
Es:1
MOV 1000 registroX // sposta il contenuto del byte mille sul registro della cpu.
SUB 0x16 // attiva la subrouting contenuta al byte 16 (in esadecimale). In questo punto della memoria FakeOS tiene
//ha una subroutine che legge un file. Il file si determina in funzione del contenuto del registro X
Es:2
Maz per diletto inventa il suo GMIos85 e lo rilascia opensource.
Io me lo installo e studio le specifiche. e per aprire un file "puntato" dalla cella di memoria 1000 scorpro che devo fare
MOV 1000 registroY // sposta il contenuto del byte mille sul registro della cpu.
MOV 0x1 registroX // sposta il numero 1 sul registro della cpu.
SUB 0x22 // attiva la subrouting contenuta al byte 22 (in esadecimale). In questo punto della memoria FakeOS tiene
//ha una subroutine che legge un file. Il file si determina in funzione del contenuto del registro Y. Il contenuto del registro X dice se devo cancellare un file (valore diverso da 1) oppure leggerlo (valore 1).
ES:3
Per diletto Stavros lancia un eseguibile di FakeOS da GMIos85. Questo file è il primo esempio.
Il buon maz per diletto ha messo una subroutine al byte 16 che formatta l'hard disk.
Stavros si ritrova con il suo HD formattato e come risultato toglie il saluto a Maz.
Ovviamente l'esempio 3 è per ridere.
Con una buona probabilità le chiamate al s.o. differente daranno il risultato imprevedibili, con verosimili crash dell'applicazione, o addirittura in casi sfortunati del sistema operativo stesso (vedi esempio 3):
Come vedi però le istruzioni (linguaggio macchina) sono le STESSE. Io ho usato un menomonico pseudo assembly, ma dentro l'eseguibile c'è il codice binario che viene dato in pasto alla CPU (magari MOV sarebbe 00000101).
Più chiaro ora?
--edit
@stavros: ma il java non è compilato per la virtual machine? Vale a dire una cpu non fisica con il suo set di istruzioni, che poi viene sostanzialmente simulata dal software java virtual machine?
Quindi in teoria: io compilo in java, poi la java virutal machine interpreta il codice bytecode (se non sbaglio è il nome che viene dato all' "eseguibile" compilato in javsa.
Invoco qualche virtuoso del Java
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Certamente che sì... l'interfaccia OS -> "JVMCore" deve sempre essere creata ad hoc per l'os interessato..
ਗੁਰੂ
- CaMpIoN
- Membro super
- Messaggi: 684
- Iscritto il: 17/11/2009, 16:20
- Specialità: Programmatore
- Uso: GM:Studio 1.4 Master
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Grande baron
Gia che è stato aperto il topic mi chiedevo questa cosa:
Ho letto che il linguaggio macchina è in codice binario cioè numeri 0,1 e che i file exe sono in linguaggio macchina, però quando apro con notepad i file exe mi escono non 0,1 ma tantissimi caratteri asci che non riguardano minimamente al 0,1 del codice binario...
Mi chiedo perchè? come funziona?
Gia che è stato aperto il topic mi chiedevo questa cosa:
Ho letto che il linguaggio macchina è in codice binario cioè numeri 0,1 e che i file exe sono in linguaggio macchina, però quando apro con notepad i file exe mi escono non 0,1 ma tantissimi caratteri asci che non riguardano minimamente al 0,1 del codice binario...
Mi chiedo perchè? come funziona?
Giochi da me creati:
Spoiler
- Stavros
- GMI Advanced
- Messaggi: 1914
- Iscritto il: 24/02/2010, 20:03
- Specialità: PixelArt - Grafica
- Uso: GM:Studio 2
- Località: QDMA12
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Perchè Notepad non legge i file binari e quindi ti presenta (credo) la combinazione ASCII o Unicode che si riferisce a quel carattere binario... Ti serve un editor avanzato (UltraEdit lo fa) oppure ti crei ad hoc un programmino che legge byte per byte e stampa il carattere convertito...CaMpIoN ha scritto:Grande baron
Gia che è stato aperto il topic mi chiedevo questa cosa:
Ho letto che il linguaggio macchina è in codice binario cioè numeri 0,1 e che i file exe sono in linguaggio macchina, però quando apro con notepad i file exe mi escono non 0,1 ma tantissimi caratteri asci che non riguardano minimamente al 0,1 del codice binario...
Mi chiedo perchè? come funziona?
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
non ne posso più di questa domanda sui binari, ascii e company viene ripetuta ogni due settimane in forme poco diverse tra loro
smettete di pensare che esista "qualche cosa" diverso dai numeri binari dentro al computer: file di testo, eseguibili, musica, foto, modelli 3D, stato della tastiera (tasti premuti), movimento del mouse...
sono SEMPRE e SOLO numeri binari (sequenze di zero e uno) opportunamente memorizzati in hd, ram, registri di sistema, schede hardware ecc. ecc...
cambia l'interpretazione.
Stavros ha spiegato bene cosa succede: apri con notepad una sequenza di numeri binari che lui interpreta come testo, e lo visualizza così.
Se tu lo aprissi come immagine vedresti colori a caso (in realtà le immagini per essere identificabili iniziano sempre con una precisa sequenza di numeri che dicono "io sono una gif", "io invece un jpg", se questa sequenza non si trova il programma di visualizzazione immagini segnala che il "formato non è valido").
Stessa cosa per i midi, i wav e gli mp3...
Il file di testo ASCII ha una regola banalissima di codifica, (in particolare nessuna sequenza di start), quindi qualunque file può essere aperto come "testo". Le uniche cose codificate sono i caratteri non stampabili (a capo, tab...)
Non di rado capita cambiando editor di testo che i tab abbiano allineamente differenti
Paragone abusatissimo: con le lettere puoi scrivere in italiano, in francese, in spagnolo in inglese...
sempre (più o meno) le stesse lettere, ma se provi a interpretarle in italiano, quando la lingua usata è il tedesco: ecco che ti ritrovi una sfilza priva di significato di lettere (non parole!).
Dai il testo ad un tedesco e capisce tutto
smettete di pensare che esista "qualche cosa" diverso dai numeri binari dentro al computer: file di testo, eseguibili, musica, foto, modelli 3D, stato della tastiera (tasti premuti), movimento del mouse...
sono SEMPRE e SOLO numeri binari (sequenze di zero e uno) opportunamente memorizzati in hd, ram, registri di sistema, schede hardware ecc. ecc...
cambia l'interpretazione.
Stavros ha spiegato bene cosa succede: apri con notepad una sequenza di numeri binari che lui interpreta come testo, e lo visualizza così.
Se tu lo aprissi come immagine vedresti colori a caso (in realtà le immagini per essere identificabili iniziano sempre con una precisa sequenza di numeri che dicono "io sono una gif", "io invece un jpg", se questa sequenza non si trova il programma di visualizzazione immagini segnala che il "formato non è valido").
Stessa cosa per i midi, i wav e gli mp3...
Il file di testo ASCII ha una regola banalissima di codifica, (in particolare nessuna sequenza di start), quindi qualunque file può essere aperto come "testo". Le uniche cose codificate sono i caratteri non stampabili (a capo, tab...)
Non di rado capita cambiando editor di testo che i tab abbiano allineamente differenti
Paragone abusatissimo: con le lettere puoi scrivere in italiano, in francese, in spagnolo in inglese...
sempre (più o meno) le stesse lettere, ma se provi a interpretarle in italiano, quando la lingua usata è il tedesco: ecco che ti ritrovi una sfilza priva di significato di lettere (non parole!).
Dai il testo ad un tedesco e capisce tutto
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- Stavros
- GMI Advanced
- Messaggi: 1914
- Iscritto il: 24/02/2010, 20:03
- Specialità: PixelArt - Grafica
- Uso: GM:Studio 2
- Località: QDMA12
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
O saccente , bisogna inchinarsi a cotanta capacità esplicativa...
Sia chiaro, Campion, che puoi pure modificarli tramite notepad o qualsiasi altro editor di testo che non legge i binari, un eseguibile, una png, però poi non verrà più riconosciuto come eseguibile o png in quanto mancano gli header che lo identificano ("sono un eseguibile" o "sono una png") perchè gli editor di testo sono predisposti per il testo e non inseriscono gli header corretti...
Sia chiaro, Campion, che puoi pure modificarli tramite notepad o qualsiasi altro editor di testo che non legge i binari, un eseguibile, una png, però poi non verrà più riconosciuto come eseguibile o png in quanto mancano gli header che lo identificano ("sono un eseguibile" o "sono una png") perchè gli editor di testo sono predisposti per il testo e non inseriscono gli header corretti...
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Sono d'accordo con molte cose scritte da voi (anche se alcune cose -tipo il secondo post di baron, quello che inizia con "ti faccio un esempio molto pratico...",- non le ho capite molto bene").
Comunque il discorso che facevo io era molto semplice:
1) linguaggio macchina = linguaggio processore (quindi è a priscindere dal s.o.)
2) gli .exe sono legati a un sistema operativo preciso (windows)
3) date le prime due premesse dico: quindi questi file non contengono linguaggio macchina (ma qualcosa di simile al linguaggio macchina)
Se questo ragionamento è sbagliato potrei sapere in quale punto è l'errore?
Comunque il discorso che facevo io era molto semplice:
1) linguaggio macchina = linguaggio processore (quindi è a priscindere dal s.o.)
2) gli .exe sono legati a un sistema operativo preciso (windows)
3) date le prime due premesse dico: quindi questi file non contengono linguaggio macchina (ma qualcosa di simile al linguaggio macchina)
Se questo ragionamento è sbagliato potrei sapere in quale punto è l'errore?
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Te l'abbiamo detto già varie volte. Il programma non è che non funziona sugli altri os è che "usa" librerie che window ha e gli altri OS no, viceversa per le applicazioni degli altri OS. Il linguaggio macchina è sempre quello ma non puoi usare i wform su linux ad esempio. L'estensione è diciamo per far capire al OS che quel file lo può far eseguire, file con altre estensioni invece non li bada nemmeno perchè hanno ad esempio uno scopo diverso da quello di essere eseguiti ma bensì essere letti da altri programmi(tipo i file immagine). Ogni cosa è bit, cambia solo il modo in cui li interpreti
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
1) linguaggio macchina = linguaggio processore (quindi è a priscindere dal s.o.)marco23452b ha scritto:Sono d'accordo con molte cose scritte da voi (anche se alcune cose -tipo il secondo post di baron, quello che inizia con "ti faccio un esempio molto pratico...",- non le ho capite molto bene").
Comunque il discorso che facevo io era molto semplice:
1) linguaggio macchina = linguaggio processore (quindi è a priscindere dal s.o.)
2) gli .exe sono legati a un sistema operativo preciso (windows)
3) date le prime due premesse dico: quindi questi file non contengono linguaggio macchina (ma qualcosa di simile al linguaggio macchina)
Se questo ragionamento è sbagliato potrei sapere in quale punto è l'errore?
2) gli .exe sono legati a un sistema operativo preciso (windows) in quanto richiamano delle istruzioni memorizzate dal sistema operativo in opportune parti di memoria
3) date le prime due premesse dico: i file contengono il linguaggio macchina, e queste istruzioni in alcuni punti chiedono alla cpu di eseguire pezzi di codice che ha memorizzato il sistema operativo in opportune parti della memoria.
Se un programma eseguibile non richiede nessuna libreria da parte di un sistema operativo è esso stesso un sistema operativo oppure si definisce firmware (in genere quando ha caratteristiche troppo minimaliste perchè sia accettabile chiamarlo sistema operativo -> software su una sveglia da due soldi regalata con il detersivo)
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Era questo che non capivo.Grazie milleJak ha scritto:Il programma non è che non funziona sugli altri os è che "usa" librerie che window ha e gli altri OS no
@baron Grazie adesso mi è molto più chiaro
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Spero di non sbagliarmi, eventualmente Baron (che mi ha preceduto) mi bacchetterà:marco23452b ha scritto:Sono d'accordo con molte cose scritte da voi (anche se alcune cose -tipo il secondo post di baron, quello che inizia con "ti faccio un esempio molto pratico...",- non le ho capite molto bene").
Comunque il discorso che facevo io era molto semplice:
1) linguaggio macchina = linguaggio processore (quindi è a priscindere dal s.o.)
2) gli .exe sono legati a un sistema operativo preciso (windows)
3) date le prime due premesse dico: quindi questi file non contengono linguaggio macchina (ma qualcosa di simile al linguaggio macchina)
Se questo ragionamento è sbagliato potrei sapere in quale punto è l'errore?
1. In teoria si, ma in genere c'é un passaggio intermedio tra il processore e l'esecuzione del codice. Il codice binario viene prima di tutto letto dal sistema operativo (dal kernel) che traduce le istruzioni in base all'hardware (in pratica, il programma non conosce il tipo di processore e le sue istruzioni, indica solo quello che si deve fare, poi ci pensa il kernel a tradurre per il processore specifico)
2. Si per i motivi di cui sopra
3. Ancora una volta, vedi sopra. Contengono istruzioni adatte al kernel del sistema operativo, e di conseguenza su altri kernel tipo mac o linux non possono funzionare.
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti