Dubbio sugli eseguibili e sul linguaggio macchina
- 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. 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)
non escludo che questo esista, ma in tal caso davvero non è linguaggio macchina, è qualche cosa di simile al byte-code ("eseguibile" per una macchina virtuale).
Esistono comunque programmi eseguibili che a parità di s.o. hanno compilazioni diverse in funzione della cpu.
Con windows mobile si trovano alcuni software che funzionano solo se il pda monta una cpu della famiglia ARM e non per altri tipi...
Suppongo sia la stessa cosa per i programmi specifici a 64 bit: se il processore è a 32 non può interpretare le istruzioni aggiuntive che funzionano per il 64 bit, di cui una serie di programmi che sono compilati per il 32 e il 64 bit (in questo caso però anche i s.o. cambiano per sfruttare la nuova architettura)
http://it.wikipedia.org/wiki/64_bit -> paragrafo 32 contro 64 bit
Naturalmente un processore "figlio" di un precedente in genere allarga il suo set di istruzioni mantenendo tutte le istruzioni del padre, per motivi di compatibilità (motivo per cui si usa l'architettura CISC invece della più performante RISC).
non escludo che questo esista, ma in tal caso davvero non è linguaggio macchina, è qualche cosa di simile al byte-code ("eseguibile" per una macchina virtuale).
Esistono comunque programmi eseguibili che a parità di s.o. hanno compilazioni diverse in funzione della cpu.
Con windows mobile si trovano alcuni software che funzionano solo se il pda monta una cpu della famiglia ARM e non per altri tipi...
Suppongo sia la stessa cosa per i programmi specifici a 64 bit: se il processore è a 32 non può interpretare le istruzioni aggiuntive che funzionano per il 64 bit, di cui una serie di programmi che sono compilati per il 32 e il 64 bit (in questo caso però anche i s.o. cambiano per sfruttare la nuova architettura)
http://it.wikipedia.org/wiki/64_bit -> paragrafo 32 contro 64 bit
Naturalmente un processore "figlio" di un precedente in genere allarga il suo set di istruzioni mantenendo tutte le istruzioni del padre, per motivi di compatibilità (motivo per cui si usa l'architettura CISC invece della più performante RISC).
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é?
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
Baron quello che fa il kernel é fornire un livello di astrazione dell'hardware ai programmi che girano sul sistema operativo, non vedo come questo possa essere possibile se non con una specie di "filtro" sul codice in esecuzione
- 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
ad esempio con una funzione X memorizzata in Y.
tu la chiami.
il s.o. in Y memorizza una funzione ottimizzata per il processore.
directX non è che funzioni molto diversamente.
tu installi directx (che diventa "parte" del s.o.), e gli exe chiamano la funzione di directx.
l'exe sulla macchina A si trova una funzione per la cpu mostro di Maz, l'exe sul pc B si trova la funzione per la cpu catorcio di Jak.
L'exe non cambia, cambia la libreria del s.o.
tu la chiami.
il s.o. in Y memorizza una funzione ottimizzata per il processore.
directX non è che funzioni molto diversamente.
tu installi directx (che diventa "parte" del s.o.), e gli exe chiamano la funzione di directx.
l'exe sulla macchina A si trova una funzione per la cpu mostro di Maz, l'exe sul pc B si trova la funzione per la cpu catorcio di Jak.
L'exe non cambia, cambia la libreria del s.o.
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
Hei non ho più un rottame di pc!BaronVsCorsar ha scritto:si trova la funzione per la cpu catorcio di Jak.
L'ho cambiato tempo fa, direi che un amd athlon quadcore da 2.8 GHz non è un catorcio di processore
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
- 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
Grazie ora ho capito,
Giochi da me creati:
Spoiler
- 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
Riapro l'argomento:
fermo lestando che alla fine ho capito (almeno credo) ciò che avete detto, avete anche detto...
fermo lestando che alla fine ho capito (almeno credo) ciò che avete detto, avete anche detto...
Homunculus ha scritto:1. In teoria si, ma in genere c'é un passaggio intermedio tra il processore e l'esecuzione del codice
...che è quello che io intendevo dire fin dall'inizio. Quindi torno a dire: avevo ragione anche io?BaronVsCorsar ha scritto:non escludo che questo esista, ma in tal caso davvero non è linguaggio macchina
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
- 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
no, quanto ha detto Homunculus
L'esempio delle directX è (semplificato) un buon esempio.
Tu chiami una funzione della directX. Il programma funziona sia che tu sia in directX6 o dirctX7.
L'exe (il gioco) nel frattempo non è stato cambiato (stesse istruzioni macchina), eppure chiami due funzioni diverse (directX6 o directX7).
Non c'è una interpretazione dell'istruzione macchina, trovi sempre una sorta di "esegui il codice che hai messo qui". Cambia il codice "bersaglio".
Proprio a spanne eh... mica riportare questo esempio dicendo "funzionano così i sistemi operativi"...
non è corretto come lo interpreti tu.Homu ha scritto: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)
l'azione del kernel è rendere disponibili delle funzioni che l'exe va a chiamare. L'exe chiama queste funzioni tramite il linguaggio macchina. Il SO stabilisce come è fatta esattamente la funzione.Me stesso ha scritto:directX non è che funzioni molto diversamente.
tu installi directx (che diventa "parte" del s.o.), e gli exe chiamano la funzione di directx.
l'exe sulla macchina A si trova una funzione per la cpu mostro di Maz, l'exe sul pc B si trova la funzione per la cpu catorcio di Jak.
L'exe non cambia, cambia la libreria del s.o.
L'esempio delle directX è (semplificato) un buon esempio.
Tu chiami una funzione della directX. Il programma funziona sia che tu sia in directX6 o dirctX7.
L'exe (il gioco) nel frattempo non è stato cambiato (stesse istruzioni macchina), eppure chiami due funzioni diverse (directX6 o directX7).
Non c'è una interpretazione dell'istruzione macchina, trovi sempre una sorta di "esegui il codice che hai messo qui". Cambia il codice "bersaglio".
Proprio a spanne eh... mica riportare questo esempio dicendo "funzionano così i sistemi operativi"...
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
Cioè il ragionamento di Homunculus...come lo interpreto io non è corretto però lui ha detto giusto ? oppure io lo interpreto male proprio perchè il ragionamento è sbagliato ?BaronVsCorsar ha scritto:no, quanto ha detto Homunculusnon è corretto come lo interpreti tu.Homu ha scritto: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)
Ultima modifica di gameplay_extreme il 27/12/2011, 0:53, 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
- 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
bisognerebbe chiedere delucidazioni a homu su cosa intendese. Se leggi io lo avevo già contestato.
Semplificando una cpu è un aggeggio elettronico che ha una serie di pin di ingresso ed uscita.
Ad esempio 4 pin possono essere l'ingresso dell'istruzione,
ed altri 4 l'ingresso di un dato.
Mando una istruzione 0011 e il dato 0010 che potrebbe significare "memorizza il dato 0010 in un tuo registro interno"
Mando una istruzione 0100 e il dato 0001 che potrebbe significare "prendi il dato 0001 e sommalo a quelo del tuo registro interno"
Le istruzioni in linguaggio macchina non vanno interpretate, e l'eseguibile ha la sequenza di istruzioni e di dati da passare alla cpu. Si preleva l'istruzione da dove è memorizzata e la si butta sui pin di ingresso della CPU.
Il SO vedilo semplicemente come una collezione di funzioni già disponibili (l'exe memorizza il comando "esegui funzione" e il parametro "indirizzo della funzione del SO).
Semplificando una cpu è un aggeggio elettronico che ha una serie di pin di ingresso ed uscita.
Ad esempio 4 pin possono essere l'ingresso dell'istruzione,
ed altri 4 l'ingresso di un dato.
Mando una istruzione 0011 e il dato 0010 che potrebbe significare "memorizza il dato 0010 in un tuo registro interno"
Mando una istruzione 0100 e il dato 0001 che potrebbe significare "prendi il dato 0001 e sommalo a quelo del tuo registro interno"
Le istruzioni in linguaggio macchina non vanno interpretate, e l'eseguibile ha la sequenza di istruzioni e di dati da passare alla cpu. Si preleva l'istruzione da dove è memorizzata e la si butta sui pin di ingresso della CPU.
Il SO vedilo semplicemente come una collezione di funzioni già disponibili (l'exe memorizza il comando "esegui funzione" e il parametro "indirizzo della funzione del SO).
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
Ok, credo di aver capito cosa intendi (come avevo già detto), comunque il discorso di homunculus era esattamente quello che io volevo dire io all'inizio (qualora qualcuno non avesse capito cosa intendevo)BaronVsCorsar ha scritto:bisognerebbe chiedere delucidazioni a homu su cosa intendese. Se leggi io lo avevo già contestato.
Semplificando una cpu è un aggeggio elettronico che ha una serie di pin di ingresso ed uscita.
Ad esempio 4 pin possono essere l'ingresso dell'istruzione,
ed altri 4 l'ingresso di un dato.
Mando una istruzione 0011 e il dato 0010 che potrebbe significare "memorizza il dato 0010 in un tuo registro interno"
Mando una istruzione 0100 e il dato 0001 che potrebbe significare "prendi il dato 0001 e sommalo a quelo del tuo registro interno"
Le istruzioni in linguaggio macchina non vanno interpretate, e l'eseguibile ha la sequenza di istruzioni e di dati da passare alla cpu. Si preleva l'istruzione da dove è memorizzata e la si butta sui pin di ingresso della CPU.
Il SO vedilo semplicemente come una collezione di funzioni già disponibili (l'exe memorizza il comando "esegui funzione" e il parametro "indirizzo della funzione del SO).
Homunculus ha scritto:Baron quello che fa il kernel é fornire un livello di astrazione dell'hardware ai programmi che girano sul sistema operativo, non vedo come questo possa essere possibile se non con una specie di "filtro" sul codice in esecuzione
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
- nightwish88
- GMI Advanced
- Messaggi: 1739
- Iscritto il: 18/01/2009, 13:41
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
e se proprio dobbiamo dirla tutta l'assembly per la programmazione del pentium sotto linux è diversa da quello sotto windows. Sembra un paradosso ma anche quando scrivi programmi in linguaggio macchina servono alcune direttive per specificare cosa stai scrivendo, il codice è uguale ma tra un sistema e un altro va filtrato, inserendo caratteri necessari. Sotto linux era tranquillo, se volevo programmare in assembly sotto windows non potevo usare lo stesso codice ma aggiungere vari underscore ad alcune direttive. Il vero linguaggio macchina lo vedi solo quando monti su una millefori un PIC16F84 e installi sul tuo computer MPLAB
- xtitox
- Membro
- Messaggi: 106
- Iscritto il: 07/09/2011, 18:19
- Specialità: musico
- Località: nel mondo dei sogni
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
windows legge il linguaggio macchina in modo diverso da linux, per fare un paragone molto semplice immagina due lingue, ad esempio l' italiano e l' inglese, le parole di queste sono formate dalle stesse lettere eppure vengono lette e interpretate in modo diverso. Ad esempio la parola make in italiano non vuol dire niente, invece in inglese ha un significato e allo stesso modo la parola fare ha un significato in italiano e invece in inglese no. In fatti in linux per leggere i file .exe si usa Wine che in poche parole fa comprendere a linux la lingua di windows.
Spero di essere stato chiaro,
ciao
Spero di essere stato chiaro,
ciao
- 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
Ma allora il linguaggio macchina che linguaggio è, se viene letto da windows e linux in modo diverso?...praticamente e come se avessi detto che ci sono 2 linguaggi macchina (uno per linux e uno per windows).xtitox ha scritto:windows legge il linguaggio macchina in modo diverso da linux
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 la spiego semplice in gamemakerese.
Su windows puoi usare lo script ciao()
Su linux puoi usare lo script wella()
L'uno non esiste sull'altro di conseguenza non puoi usarlo.
Su windows puoi usare lo script ciao()
Su linux puoi usare lo script wella()
L'uno non esiste sull'altro di conseguenza non puoi usarlo.
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
si però il linguaggio macchina dei processori intel-compatibili è UNO SOLO! (come diceva xtitox sembrava che erano 2: 1 per windows e 1 per linux)Jak ha scritto:Te la spiego semplice in gamemakerese.
Su windows puoi usare lo script ciao()
Su linux puoi usare lo script wella()
L'uno non esiste sull'altro di conseguenza non puoi usarlo.
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
Re: Dubbio sugli eseguibili e sul linguaggio macchina
appunto, infatti lui intendeva dire che le lettere sono il "Linguaggio", ha espresso un pò male con quell'esempio.marco23452b ha scritto:si però il linguaggio macchina dei processori intel-compatibili è UNO SOLO! (come diceva xtitox sembrava che erano 2: 1 per windows e 1 per linux)Jak ha scritto:Te la spiego semplice in gamemakerese.
Su windows puoi usare lo script ciao()
Su linux puoi usare lo script wella()
L'uno non esiste sull'altro di conseguenza non puoi usarlo.
- 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
Non va bene uguale, perché nel linguaggio macchina ogni lettera (ogni byte) corrisponde a una istruzione a se stante: quindi il discorso delle istruzioni formate da lettere non c'entra nulla!Tizzio ha scritto: appunto, infatti lui intendeva dire che le lettere sono il "Linguaggio", ha espresso un pò male con quell'esempio.
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
A meno che non sia un sistema operativo un programma deve richiedere l'accesso a certe funzionalità del sistema operativo per poter operare, funzionalità che cambiano da OS a OS.
Altrimenti cose come il task manager e qualunque forma di protezione una volta avviato il programma sarebbe impossibile.
Altrimenti cose come il task manager e qualunque forma di protezione una volta avviato il programma sarebbe impossibile.
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
Oh...fin qui ci sono (tranne l'ultima frase )Jak ha scritto:A meno che non sia un sistema operativo un programma deve richiedere l'accesso a certe funzionalità del sistema operativo per poter operare, funzionalità che cambiano da OS a OS.
Altrimenti cose come il task manager e qualunque forma di protezione una volta avviato il programma sarebbe impossibile.
p.s.: è da un pò che mi chiedo questo: fino a adesso (in questo topic) mi avete detto che
1) un .exe contiene un "codice" in linguaggio macchina (Baron ha insistito sul fatto gli exe NON contengono una sorta di "bytecode" che devono essere "digeriti" dal S.O. ma contengono PRORIO IL LINGUAGGIO MACCHINA)
2) il linguaggio macchina E' IL LINGUAGGIO "CAPITO" DAL PROCESSORE.
Cioè vorrebbe dire che se uno usa un processore NON itel-compatibile (quindi con un linguaggio macchina differente) non basterebbe cambiare solo il sistema operativo ma sarebbe necessario riscaricare una versione compatibile di tutti gli applicativi???
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
- xtitox
- Membro
- Messaggi: 106
- Iscritto il: 07/09/2011, 18:19
- Specialità: musico
- Località: nel mondo dei sogni
- Contatta:
Re: Dubbio sugli eseguibili e sul linguaggio macchina
si ma prima di mandare il codice al processore viene letto dal s.o. e se non è capace di leggerlo non lo identifica
Chi c’è in linea
Visitano il forum: Nessuno e 10 ospiti