PDA

View Full Version : [ASSEMBLY/C] Applicazione avviabile al boot


Ethoel
27-03-2009, 21:23
Salve a tutti, premetto che conosco il C,C++,HTML e Java e ho una sufficiente infarinatura dell'Assembly che sṭ tuttora studiando.

Da un p̣ di tempo ho in mente un'idea per ampliare le mie conoscenze: vorrei programmare un'applicazione avviabile al boot, per il codice di boot l'assembler e per l'applicazione C, l'applicazione non deve avere le funzionalità da dover usare un kernel, vorrei fare una cosa semplice tanto per capire come è il codice e come funziona il tutto.

Qualcuno di voi è coś gentile da spiegarmi un p̣ come fare e (se ne ha voglia) postare qualche codice?

Vi ringrazio da subito per le risposte

fero86
27-03-2009, 22:38
assumendo che la macchina sia x86 la situazione é questa: quando la macchina parte viene esaminata la boot sequence e viene caricato il primo settore della prima unitá disco che si riesca a bootare, per esempio un hard disk; i dati caricati (ad un indirizzo che al momento non ricordo :p) sono codice macchina che viene eseguito direttamente e che inizialmente si ritrova col processore in modalitá reale a 16 bit; in questo stato il programma ha accesso all'interfaccia del BIOS, costituita da una serie di interrupt software ormai ben documentate (cerca la lista di Ralph Brown, anche nota come "RBIL") che permettono di svolgere una varietá di compiti. lavorare in modalitá reale a 16 bit é un incubo come pochi, motivo per cui i moderni bootloaders ci stanno il meno possibile e passano alla modalitá protetta a 32 bit quanto prima; dal momento che il codice del bootloader in genere non entra in un solo settore peró, prima di passare alla modalitá protetta in genere si usa il BIOS per caricare dall'unitá di boot i rimanenti settori del codice di boot. una volta entrato in modalitá protetta che Dio t'aiuti: il BIOS non c'é piu e le periferiche te le devi gestire a mano facendo IN e OUT :D
come dici? device drivers? quelli dell'hard disk? ottima idea... e come fai a caricarli visto che stanno sul disco assieme al kernel e al file system driver, considerando anche che in modalitá reale a 16 bit hai il limite del megabyte di RAM e non ce la fai a contenere tutta quella roba? :rolleyes:

fero86
27-03-2009, 22:42
aggiungo qualche altra nozione costruttiva :p
per sapere come passare alla modalitá protetta a 32 bit avrai un gran bisogno dei manuali dell'architettura Intel a 32 bit, che si scaricano gratuitamente dal sito della Intel (ora non mi va di cercarli). studiando questi manuali apprenderai anche un possibile sistema per poter usare ancora il BIOS anche quando sei entrato in modalitá protetta, ovvero effettuare le chiamate al BIOS in modalitá virtuale x86; questo sistema é una cosa mia :p nel senso che ci ho riflettuto tempo fa ma personalmente non ho mai visto implementazioni simili, probabilmente perché avendo delle specifiche hardware "piu o meno standard" per le unitá disco é molto piu facile accedere direttamente all'hardware che fare il task separato in cui gira il BIOS.

Ethoel
28-03-2009, 06:54
Allora per prima cosa grazie per avermi risposto :ave: Ora mi studio un p̣ che dice l'intel :coffee: e poi vedo se riesco a combinare qualcosina :D