Newsgroup: it.comp.lang.c
Titolo: linguaggio macchina

ciao
il linguaggio macchina per essere eseguito dal processore
necessita sempre del S.O.?
Cioe' se io avessi un pc privo di S.O.
potrei accedere al processore tramite assembler?
E' che non riesco (con tutta la fantasia)
ad intuire come 0010101010101 venga interpretato dal processore.
scusate la domanda banale ma sono concetti per me 'lontani'
grazie

 ad intuire come 0010101010101 venga interpretato dal processore.
Il linguaggio macchina è ESATTAMENTE il linguaggio conosciuto dal 
processore. In effetti il processore è stato progettato e costruito 
apposta per interpretare quel codice che scrivi.
E.

 ad intuire come 0010101010101 venga interpretato dal processore.
Per capirlo dovresti programmare un po' in assembly.
Il tipico programma assembly va visto come una lista di istruzioni
piantate sequenzialmente in N locazioni di memoria.
Approssimazione MOLTO, MOLTO, MOLTO, MOLTO, MOLTO, MOLTO, ECCETERA,
alla lontana ma essenzialmente corretta, immagina di avere una tabella
di 100 righe, ogni riga è una locazione e può contenere solo una
parola, tu sai che un tuo amico (il processore) può prendere questo
pezzo di carta ed eseguire le istruzioni dalla prima all'ultima, ok?
Tipo:
001: APRI PORTA
002: FAI PASSI
003: DIECI
004: GIRA
005: SINISTRA
006: DIECI GRADI
007: SIEDITI
Ecco, ora, il tuo amico ha un piccolo problema: non sa leggere nè
scrivere.
Però sa distinguere un'asticella da un cerchio.
Allora vi mettete d'accordo su un codice comune per scambiarvi queste
istruzioni:
001: 111111
002: 110000
003: 001010
004: 111010
005: 110001
006: 001010
007: 111011
Ecco, questo è essenzialmente quello che c'è nelle diverse locazioni
di memoria che il processore si passa una dopo l'altra, e lui sa cosa
fare.
Cioè, in realtà non lo 'sa', ma al suo interno una certa ben precisa
combinazione lo porta a fare una certa ben precisa cosa, tutto hard
coded.
--
Io.

 ad intuire come 0010101010101 venga interpretato dal processore.
Infatti non c'e' un' interpretazione univoca. Dipende se la stessa 
sequenza rappresenta dati o istruzioni. E questo e'  desumibile solo dal 
contesto.
Giorgio

 notte dei tempi si faceva cosi'.
"Notte dei tempi" è un po' esagerato per definire una prassi che
andava avanti negli anni '80 e che, in almeno un caso illustre, è
arrivata fino agli inizi dei 90s :-)
--
Io.

 ad intuire come0010101010101venga interpretato dal processore.
facciamo che il processore sa solo leggere dalla memoria in modo
sequenziale
il processore legge dalla memoria (es 8bit)  10011001 la mette in un
registro, il registro seleziona una rete tramite un multiplexer
http://it.wikipedia.org/wiki/Multiplexer
, questa rete svolge un
operazione (es somma, differenza ecc) e così viene eseguito il
programma.
ovviamente è molto alla buona questa spiegazione
ciao
Alberto


Certo che puoi, la condizione più semplice per riuscirci è questa:
creati un programma di bootstrap (che si occupi anche di caricare
tutti i driver dei dispositivi che intendi usare) e depositalo su un floppy
(all'indirizzo esatto di boot del disco).
Riavvia il pc effettuando il boot da floppy e il gioco è fatto!
Così facendo però avrai una macchina capace di eseguire quell'unico
programma e basta, (detta anche stand-alone).
Oppure, caso ancora più facile, tramite un programmatore di eprom
copia il tuo programma in una rom identica a quella del BIOS, sostituisci
le memorie sulla scheda madre ed accendi il pc.
Saluti
Fra
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/