Qualcuno è in grado di spiegarmi come posso eseguire del codice (già compilato e tradotto in binario ) su una macchina priva di sistema operativo?
Qualcuno è in grado di spiegarmi come posso eseguire del codice (già compilato e tradotto in binario ) su una macchina priva di sistema operativo?
tripallico c
E' impossibile!
hai sempre bisogno di un qualche sistema operativo per eseguire del codice binario, un pc ha bisogno di un "media" che gli interpreti il linguaggio.
=>Dedalo<=
mmmh ... un dischetto di avvio dovrebbe essere sufficiente.
Se avessi bisogno del sistema operativo per far girare qualunque binario allora come fanno i sistemi operativi a girare dato che sono anch'essi software??
questo per mr x:
ho provato con un floppy, ho settato il boot di avvio sull'unità A ma non ne vuol sapere di partire, mi dice che manca un file NTLDR che però ho scoperto essere un file di windows 2000 da abbinare ad un file di avvio chiamato boot.ini. Il fatto è che questi sono file di sistema,ma io non voglio un sistema, voglio la macchina nuda!!!
cmq grazie!!
se per caso vi capita di scoprirlo le mie orecchie sono tese!!!grazie lo stesso!!!
tripallico c
i sistemi operativi girano grazie al loro kernel che viene caricato da un loader, che viene a sua volta caricato da un programmino nell'mbr, che viene a sua volta caricato dal bios
senza sistema operativo non puoi far girare nulla... cos'e' che devi fare? il floppy di win2k non ti serve
Sotto la panza la mazza avanza.
Ovviamente è possibile in quanto come dici tu i so non sono niente altro che software e nulla di magico..
i dischetti di avvio caricano un mini sistema nella ram e ti permettono di gestire hdd cd ecc..
certo che se i binari di cui parli sono fatti per girare sotto windows è ovvio che non puoi farli partire così a caso.. è come se vuoi eseguire un exe sotto unix sempre di binari si tratta ma hanno entrambi piattaforme diverse come riferimento..
per far girare un programma semplice o complesso in maniera nativa senza so devi assemblarti un linguaggio in grado di interagire con le risorse hardware che vada poi ad eseguire i tuoi programmi...
in pratica cmq alla fine sempre di un mini so si tratta..
anche se poi puo eseguire un solo programma e basta..
non viene interpretato ma il so organizza e mette a disposizione le risorse hardware e poi il programma scritto per quel sistema opera direttamente in linguaggio macchina senza essere interpretato da nessuno..ha bisogno di un "media" che gli interpreti il linguaggio.
Poniamo il caso che io abbia un codice macchina (della mia macchina) in grado di stampare una stringa sul terminale. è ovvio che se lo stessi scrivendo in c chiamerei la funzione di sistema printf,(come per tutte le operazioni di i/o devo chiamare il s.o.),ma supponiamo di avere su un floppy il codice macchina della printf.In tal caso potrei non farmene nulla del s.o. se il mio obiettivo è stampare stringhe sul terminale di una macchina "nuda". Allora vorrei capire come faccio a caricare tale codice macchina in ram di modo che venga eseguito senza che sia stato il s.o. a caricarlo in ram..un modo ci deve pur essere no? io so che il kernel viene caricato in fase di bootstrap,ma nella gran parte dei sistemi le istruzioni per caricarlo sono in una rom e sono statiche..sono quelle che ad ogni avvio verranno eseguite per prime. Quello che vorrei io è fare a meno di queste istruzioni per caricare ciò che dico io e non necessariamente un s.o....HELP!!!!!!
tripallico c
non puoi
la famiglia ix86 e' totalmente priva di kernel in rom, quindi ti mancano tutte le funzioni basilari per l'allocazione di memoria e altre risorse hardware
quello che vuoi fare tu e' possibile solo sui sistemi embedded o con kernel in rom come l'amiga, tu le istruzioni le hai ma senza un sistema a monte non hai niente che te le interpreti, ergo per eseguire il tuo codice o ti appoggi a un sistema operativo esistente o te ne scrivi uno tu da zero che ti permetta di interfacciarsi con l'hardware
quel che vuoi fare e' chiaro: tu stai pensando al passaggio hardware > sistema > programma e vuoi saltare il passaggio del sistema alla luce del fatto che il tuo programma e' in linguaggio macchina, ma nessun ix86 e' direttamente programmabile in questo modo a meno di non rimuovere fisicamente il processore dalla sua sede e metterlo su una basetta da dove lanciargli segnali; ma la scheda madre, il bios e a seguire il sistema operativo servono proprio a evitare questo
Sotto la panza la mazza avanza.
riguardo al programma mi sto convincendo... ma allora il s.o. come lo scrivono??dato che esso per forza deve poggiare solo sull'hardware...
tripallico c
semplice: con l'ambiente di sviluppo di un altro sistema operativo, tendenzialmente quello della generazione precedente
so che puo' sembrare un po' la storia dell'uovo e della gallina, ma e' proprio cosi'... non devi pensare a un pc come una cosa programmabile da zero, piuttosto concentrati sul percorso tecnologico che ha portato alla sua creazione: in principio c'erano i calcolatori meccanici, poi quelli elettromeccanici, poi le schede preforate, poi i calcolatori valvolari, poi arrivarono i transistor e cosi' via... ogni generazione e' stata creata con gli strumenti della generazione precedente
ad esempio windows xp e' stato sviluppato in C++ su windows nt, windows nt in C++ su windows for workgroup, windows fw e precedenti in C sul dos, il dos in C/assembly sul CP/M e il CP/M in assembly sull'IMSAI, e cosi' via fino ad arrivare al primo elaboratore programmabile direttamente in linguaggio macchina; ad ogni "pezzo" della catena si collegava poi un'interfaccia per poter dialogare col pezzo successivo, vuoi un semplice floppy su cui installare un bootloader e relativo sistema, vuoi una connessione seriale, vuoi una scheda di rete o una qualsiasi altra interfaccia che sia compatibile con entrambe le macchine, purche' si possa fare in modo di trasferire il software da una all'altra; se tu ti trovassi davanti un pc "vuoto" e ci volessi mettere su un sistema operativo da zero dovresti fare tutto il percorso inverso, oppure piu' sensatamente sfruttare gli strumenti che la tecnologia attuale ti offre: ovvero, un altro sistema operativo (che volendo potresti gia' far girare sulla stessa macchina che intendi programmare da zero, nulla te lo vieta)
quando si parla di programmare in linguaggio macchina non si intende trasferire direttamente una sequenza di 0 e 1 in un pc: e' impossibile; la programmazione in linguaggio macchina e' una attivita' puramente manuale che riguardava i calcolatori valvolari e precedenti, si trattava di spostare fisicamente degli switch per porre diversi stati agli ingressi dei processori e relativi componenti... allo stato odierno non e' possibile in alcun modo programmare in linguaggio macchina se non con una di queste macchine che accetti il linguaggio direttamente, oppure con un chip posto direttamente su una basetta e a cui inviare la trafila di segnali 0V e +5V che identificano rispettivamente 0 e 1 in binario
spero di non averti confuso le idee...
Sotto la panza la mazza avanza.