knuto Skrevet 25. desember 2005 Del Skrevet 25. desember 2005 (endret) Eg har i det siste begynt å tenkje mykje på korleis eit operativsystem er oppbygd. Kor mykje som må programmerast. Kva som er innebygd i BIOS. Kva som må programmerast fullstendig sjølv osv. Kor mykje av operativsystemet må programmerast i assembly før ein kan ta i bruk programmeringsspråk som C++? C++ er jo eit delvis plattformavhennig språk, men kan du programmere C++ totalt uavhennig av ein plattform i bakgrunnen? Kan du då bruke innebygde bibliotek til f.eks. I/O til skjerm, eller må alt slikt programmerast i asm først? Altså. Her har me eit enkelt C++-program: #include <iostream> int main() { cout << "Hey! Dette kjem ut på skjermen"; return 0; }//end int main Men denne koden blir jo kompilert forskjelleg mellom linux og windows. C++ blir jo kompilert til eit spåk CPU'en forstår seg på, men er det tilfelle? Her har jo operativsystemet ein jobb... Kan ein programmere plattformuavhennig C++. Altså C++ som ikkje treng nokon platform meir enn seg sjølv? Må ein i så fall assemble alt ein treng av f.eks. I/O-bibliotek internt noko slikt: #include <iostream> void printOnScreen(char[] text) { asm { ; ASM-kode her for skriving til skjerm (eg kan ikkje asm :)) }//end asm }//end void printOnScreen int main() { printOnScreen("Hello world!"); return 0; }//end int main Er det dette (pluss ein spesiell kompilator) som må til for å programmere C++ uten nokon platform? Kan ein med andre ord programmere eit operativsystem utan direkte asm, berre asm internt i C++? Og så: Kor mykje må programmerast i asm? Må ein lage funksjonar for lesing frå harddisk, eller er det innebygd i BIOS? Eller nettverk? Eller skjerm? Kva må til for å lage GUI? Og litt linux-spesifikt. Alle linuxdistroar brukar jo linuxkjernen, men kva ligg inni den? Er heile kjernen programmert i asm? Kva er det eigentleg som f.eks. ubuntu står bak, anna enn å putte GNU/Linux og Gnome inn på ein CD? Men nå må de ikkje tru at eg har ein fjortisdraum om å lage eit operativsystem (som evt. skal revolusjonere verden). Slike mål er berre tidsfordriv Endret 25. desember 2005 av knuto Lenke til kommentar
Zethyr Skrevet 25. desember 2005 Del Skrevet 25. desember 2005 (endret) Støtte for C++ behøver man ikke å programmere i asm, siden man ikke har C++-kode men binærkode som tolkes av maskinen. Platformuavhengig skal det vanskelig gjøres å lage et operativsystem, ut fra min begrensede kunnskap om emnet. Endret 25. desember 2005 av Zethyr Lenke til kommentar
knuto Skrevet 25. desember 2005 Forfatter Del Skrevet 25. desember 2005 (endret) Støtte for C++ behøver man ikke å programmere i asm, siden man ikke har C++-kode men binærkode som tolkes av maskinen. Hmm. Ettersom det er forskjell på å programmere C++ for windows og linux, så reknar eg med at noko må til får å bruka det, eller er det rett og slett slik at viss ein ikkje brukar eit einaste bibliotek, men f.eks. assembler (inni C++-koden) IO-funksjoner ol, så vil det heile bli plattformuavhennig? Platformuavhengig skal det vanskelig gjøres å lage et operativsystem, ut fra min begrensede kunnskap om emnet. Skreiv då aldri noko om å lage operativsystemet plattformuavhennig, men den forrige posten var elendig *redigere når eg får tid* Endret 25. desember 2005 av knuto Lenke til kommentar
Pingvinen Skrevet 31. desember 2005 Del Skrevet 31. desember 2005 http://www.csn.ul.ie/~darkstar/assembler/ http://www.iu.hio.no/~mark/os/os.html http://www.linuxfromscratch.org/ http://my.execpc.com/CE/AC/geezer/osd/ http://www.openbg.net/sto/os/ Til å lage OS kan du bruke a86 Assembler: http://eji.com/a86/ Lenke til kommentar
dayslepr Skrevet 31. desember 2005 Del Skrevet 31. desember 2005 huff .. kanskje du skulle starte med å stille étt spørsmål om gangen, knuto? Lenke til kommentar
Axel`` Skrevet 1. januar 2006 Del Skrevet 1. januar 2006 (endret) Det virker som om du mangler den mest fundamentale kunnskapen, nemlig evnen til å kunne lete frem informasjon på egenhånd. Det finnes dusinvis av FAQ-er og mindre guider om emnet som du enkelt kunne funnet via google.. her er ett knippe: http://www.nondot.org/sabre/os/articles http://www.osdever.net/ http://www.osdev.org/ Du bør også vurdere å lese USENET-gruppene alt.os.development og comp.lang.asm.x86 fast hvis du er interessert i OS-utvikling. Det er flere interessante diskusjoner der du sikkert vil kunne dra nytte av å følge. Gruppen alt.os.development har samlet sammen litt informasjon om operativsystemutvikling, dette ble lenket til av pingvinen lenger oppe i tråden. Hvis du har hakket litt med x86-assembly fra før av (antar at du kjører en x86..), bør du først ta en kikk på Intel sin dokumentasjon. Les dokumentasjonen til Pentium 1, ikke P4. Sistnevnte er både lenger og - etter min mening - noe tyngre å lese. Det finnes utallige små hobbykjerner rundt omkring på nettet som du kan leke med. Mange er versjon 0,000001 og knapt bootbare dog .. google er din venn. De første versjonene av Linux-kjernen er relativt små, og man kan raskt få et overblikk over hele systemet. Igjen, google er din venn. --Axel. Endret 1. januar 2006 av Axel`` Lenke til kommentar
abcd423417984 Skrevet 1. januar 2006 Del Skrevet 1. januar 2006 Du kan skrive et OS i C++ ettersom det kompileres til maskinkode. Du må bare få tak i et verktøy for å fjerne platformspesifik kode fra den kompilerte fila (f.eks. for å fjerne PE headers i windows-kompilert kode). Bootloadern derimot må vel etter hva jeg har forstått bli skrevet delvis i asm. Lenke til kommentar
Axel`` Skrevet 1. januar 2006 Del Skrevet 1. januar 2006 Bootloadern derimot må vel etter hva jeg har forstått bli skrevet delvis i asm.5365252[/snapback] Det samme gjelder vel også interruptbehandlingskoden. --Axel. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå