Dubbio sugli eseguibili e sul linguaggio macchina

Algoritmi, discussioni sulle possibili implementazioni, matematica, fisica e tutti gli argomenti correlati alla programmazione
Avatar utente
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

Messaggio da BaronVsCorsar »

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).
ImmagineSchiva 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é?

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Dubbio sugli eseguibili e sul linguaggio macchina

Messaggio da Homunculus »

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

Avatar utente
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

Messaggio da BaronVsCorsar »

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.
ImmagineSchiva 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é?

Jak
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

Messaggio da Jak »

BaronVsCorsar ha scritto:si trova la funzione per la cpu catorcio di Jak.
Hei non ho più un rottame di pc! :lol:
L'ho cambiato tempo fa, direi che un amd athlon quadcore da 2.8 GHz non è un catorcio di processore :lol:
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

Avatar utente
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

Messaggio da CaMpIoN »

Grazie ora ho capito, ;)
Giochi da me creati:
Spoiler
Immagine

Avatar utente
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

Messaggio da gameplay_extreme »

Riapro l'argomento:

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
BaronVsCorsar ha scritto:non escludo che questo esista, ma in tal caso davvero non è linguaggio macchina
...che è quello che io intendevo dire fin dall'inizio. Quindi torno a dire: avevo ragione anche io?
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
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

Messaggio da BaronVsCorsar »

no, quanto ha detto Homunculus
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)
non è corretto come lo interpreti tu.
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'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.

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"...
ImmagineSchiva 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é?

Avatar utente
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

Messaggio da gameplay_extreme »

BaronVsCorsar ha scritto:no, quanto ha detto Homunculus
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)
non è corretto come lo interpreti tu.
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 ?
Ultima modifica di gameplay_extreme il 27/12/2011, 0:53, modificato 1 volta in totale.
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
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

Messaggio da BaronVsCorsar »

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).
ImmagineSchiva 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é?

Avatar utente
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

Messaggio da gameplay_extreme »

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).
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)
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
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
nightwish88
GMI Advanced
Messaggi: 1739
Iscritto il: 18/01/2009, 13:41
Contatta:

Re: Dubbio sugli eseguibili e sul linguaggio macchina

Messaggio da nightwish88 »

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 :mrgreen:
Immagine

Web Site: AFGames

Avatar utente
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

Messaggio da xtitox »

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 :D :D

Avatar utente
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

Messaggio da gameplay_extreme »

xtitox ha scritto:windows legge il linguaggio macchina in modo diverso da linux
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).
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Jak
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

Messaggio da Jak »

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. ;)
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

Avatar utente
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

Messaggio da gameplay_extreme »

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. ;)
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)
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Dubbio sugli eseguibili e sul linguaggio macchina

Messaggio da Tizzio »

marco23452b ha scritto:
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. ;)
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)
appunto, infatti lui intendeva dire che le lettere sono il "Linguaggio", ha espresso un pò male con quell'esempio.

Avatar utente
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

Messaggio da gameplay_extreme »

Tizzio ha scritto: appunto, infatti lui intendeva dire che le lettere sono il "Linguaggio", ha espresso un pò male con quell'esempio.
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!
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Jak
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

Messaggio da Jak »

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.
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

Avatar utente
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

Messaggio da gameplay_extreme »

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.
Oh...fin qui ci sono :D (tranne l'ultima frase :lol: )

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???
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
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

Messaggio da xtitox »

si ma prima di mandare il codice al processore viene letto dal s.o. e se non è capace di leggerlo non lo identifica

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti