Autor Thema: Statt C++ mit C#?  (Gelesen 27088 mal)

useo5

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« am: 13. December 2005, 11:56 »
Hallo alle zusammen, ich würde gern mal wissen, ob man statt das übliche C++ auch C# zum weiteren aufsetzen nutzen kann. Also nachdem man Bootloader usw fertig hat und man soweit ist, das man eigentlich mit C++ weiter machen kann.

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #1 am: 13. December 2005, 12:39 »
Prinzipiell kannst du jede programmiersprache verwenden die du willst. Du musst dir einfach bewusst sein, dass du nichts vorgefertigtes verwenden kannst. Sprich du darfst zum Beispiel nicht eine Funktion verwenden, welche etwas auf dem Bildschirm ausgibt da dein Betriebssystem ja nicht gleich funktioniert wie z.B. Windows. Daher wäre Pascal zum Beispiel nicht sehr geeignet, da man mittels writeln() einen Text ausgeben kann und diese Funktion fest in den compiler integriert ist. Du musst also einfach darauf achten, keine vorgefertigten Funktionen zu verwenden und ev. dem Compiler mitteilen, keine solchen zu verwenden. Ob das bei C# geht, weiss ich nicht.

mfg, jeb

BlackSun1102

  • Beiträge: 44
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 13. December 2005, 12:51 »
Hi,

Rein Theoretisch würde es funktionieren un müsstest nur ein Jusit-In-Time Compiler schreiben...
C# (und auch alle anderen .NET-sprachen) werden zu MSIL (Microsoft [irgentwas] Language) Compiliert das ist so ähnlich wie der Java-Bytecode.
C# ist zwar ne geile Sprache vorallem wegen den vielen Featuren aber ein Famework zu schreiben dürfe sehr schwer fallen,
denn selbst das Mono ist noch nicht ganz ausgereift, obwohl es als bestes .NET Framework für Linux gillt...

Gruß BlackSun1102

useo5

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 13. December 2005, 14:21 »
Okay, danke erstmal für eure Antworten, werde mal sehen, wie ich mein System jetzt weiter aufbau > eins noch (gehört zwar nicht zum Thema, aba ist es mir nicht wert ein neues Thema auf zu machen) weis jemand, wie man ein 64 Bit System aufbauen muss? Weil ich mein System gleich als 64 Bit aufbauen wollte.

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 13. December 2005, 14:23 »
Microsoft Lntermediate Language.
Wurde aber mittlereweile in Common Intermediate Language umbenannt.
Madness isn't a bug - it's a feature

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #5 am: 13. December 2005, 14:37 »
Wenn man einen Interpreter für Brainfuck schreibt, dann geht das sogar damit. ;)
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #6 am: 13. December 2005, 16:42 »
Zu diesem Thema übrigens ein interessanter Link: http://research.microsoft.com/os/singularity/

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #7 am: 13. December 2005, 18:12 »
Zitat von: useo5
Okay, danke erstmal für eure Antworten, werde mal sehen, wie ich mein System jetzt weiter aufbau > eins noch (gehört zwar nicht zum Thema, aba ist es mir nicht wert ein neues Thema auf zu machen) weis jemand, wie man ein 64 Bit System aufbauen muss? Weil ich mein System gleich als 64 Bit aufbauen wollte.


Im Gegensatz zum Sprung von 16 Bit Real Mode auf 32 Bit Protected Mode muss man beim Sprung von 32 Bit auf 64 Bit eigentlich nichts neues lernen.

Die Page Directories haben mehr Stufen, vieles was 32 bit war wurde auf 64 bit aufgeweitet, speziell bei AMD64 gibt es neue Register und einige alte x86-Instruktionen sollen nicht mehr funktionieren, genau wie das Hardware Task Switching, aber konzeptionell kannst du Wissen über 32 Bit System durchaus übertragen.

Und ja, C# kannst du auch anstatt von C++ benutzen, aber du musst durchaus eine virtuelle Maschine dafür in deinen Kernel reinsetzen, welche du nicht wirklich in C# schreiben kannst. ;)
Von daher ja - aber nicht direkt nach dem Bootloader.
*post*

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 13. December 2005, 18:15 »
ich würd sagen man könnte C# (bzw. alle CIL-Bytecodes) auch ahead of time in nativen Code übersetzen. dann kann man ihn auch ohne VM nutzen. geht natürlich einiges an features verloren...
Dieser Text wird unter jedem Beitrag angezeigt.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #9 am: 13. December 2005, 21:47 »
Nun, dann brauchst du noch massig "Run Time Support" wie z.B. den Garbage Collector. ;)
*post*

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #10 am: 14. December 2005, 07:36 »
Zitat von: joachim_neu
Wenn man einen Interpreter für Brainfuck schreibt, dann geht das sogar damit. ;)


Hej, die Idee ist gar nicht mal so schlecht. Wenn man zum Beispiel ein paar Zusätzliche Sachen definiert wärs sogar möglich. Also z.B.

Die ersten 20 Felder des Arrays sind zusatzfunktionen, der Rest stellt den kompletten Arbeitsspeicher dar. Wenn man nun z.B. das erste Feld ausgeben will, wird jedoch das Byte im zweiten Feld an den Port im dritten Feld gesendet. Mit solchen Zusatzdefinitionen sollte sich durchaus ein OS coden lassen :P

mfg, jeb

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #11 am: 22. December 2005, 22:20 »
Nö man braucht bei Brainfuck nichts zusätzlich definieren. Die Sprache ist Touring-völlständig, d.h. es geht damit theoretisch alles zu schreiben. Nur ist das sinnvoll?
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 22. December 2005, 22:30 »
Turingmaschinen (ohne O ;)) haben aber nur ihr Arbeitsband und keinen Zugriff auf irgendwelche Geräte. Daß du damit alles Berechenbare hinbekommt, bringt dir wenig, wenn du kein IO hast. Von daher müßte man wohl schon irgendwelche Zusatzdefinitionen einbauen, denn Brainfuck ist ja im wesentlichen eine Turingmaschine. Ok, ein "Hello world" in den Videospeicher zu schreiben könnte theoretisch schon noch machbar sein, aber das dürfte es auch gewesen sein.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #13 am: 23. December 2005, 12:30 »
Jop, heutzutage ist verdammt viel für die CPU schon ein RAM Bereich und ein paar I/O Ports und noch IRQs.
*post*

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #14 am: 02. January 2006, 19:42 »
Nähm mich dann aber schon mal Wunder, wie du mit Brainf*ck in den Protected-Mode schaltest und das A20-Gate aktivierst.

BlackSun1102

  • Beiträge: 44
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 01. May 2006, 17:09 »
Hi,

Ich werde in mein neues OS auf jedenfall eine .Net Implementation einbauen.
Diese soll direkt nach dem Kernel kommen, so das man z.B. die GUI auch in .Net schreiben kann

Falls jemand interesse hat mitzuwirken, könnt ihr euch gerne per P.M. melden
Der Fertige Parser soll nur die Namespaces System, System.Console und System."HardwareAbstraction" enthalten.
Zusätzliche Namespaces können hinzugeladen werden.

Gruß Chris

P.S. Ein Parser zu schreiben soll gar nicht so schwer sein. Das einzige was wirklich schwer ist, sind alle Namespaces zu implementieren

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 01. May 2006, 19:58 »
Ich wäre auch an einer .NET Implementation interessiert, melde dich bei mir, wenn du damit anfängst XD

C#ris

  • Beiträge: 47
    • Profil anzeigen
    • http://www.xerxys.org
Gespeichert
« Antwort #17 am: 02. May 2006, 12:59 »
Zitat von: BlackSun1102
Hi,
P.S. Ein Parser zu schreiben soll gar nicht so schwer sein. Das einzige was wirklich schwer ist, sind alle Namespaces zu implementieren


Viel Spaß :wink: Parser und Bibliothek sind ja nicht alles...
Ich hab das mal probiert und dann gelassen, weil Java so viel schön einfacher ist *g*
Als Bibliothek kannst du ja die Sachen von mono oder pnet nehmen, ist imho Blödsinn das nochmal alles selbst zu machen.

Hat zwar nicht mehr viel mit dem Thema zu tun, aber wenn jemand mal die .NET Namespaces in Java implementiert hat, dann soll er sich mal bei mir melden  :roll:

furesoft

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 14. June 2018, 14:11 »
falls das thema noch aktuell ist schau dir mal FlingOS oder MOSA an

array

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 21. August 2018, 23:09 »
Anstatt mit C# lieber mit Python. 

 

Einloggen