Autor Thema: OS schreiben/Hilfe  (Gelesen 7220 mal)

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« am: 16. November 2012, 17:11 »
Ich sitze schon eine Weile an Turbo Assembler dran, und lerne mit dem Buch "Turbo Assembler 2. Auflage von E.-W. Dieterich".
Da ich bis jetzt die Programme nur als DOS hinbekommen habe, und leider nicht weis wie ich diese in Windows ausführbar machen könnte,
wollte ich fragen ob ihr dass wisst. Ich weis nur dass ich meine ASM datei in eine .bin verwandle, so und ab da mache ich immer mit dem
TLinker ausführbare dos dateien daraus. Aber woher bekomme ich jetzt einen Linker für Windows?

Zum anderen wollte ich ein kleines eigenes OS schreiben. Da ich mir davon keine Ansätze vorstellen kann,  habe
ich dies hier im Internet gefunden: http://www.tutorials.de/content/171-ein-eigenes-kleines-betriebssystem.html
Es ist in NASM geschrieben, ich weiss dass TASM und NASM sehr nahe sind, aber sicher bin ich mir da nicht ob es mit TASM Compiler geht.

Dazu ist noch eine Sache:
Er gibt ganz am anfang vom Code nicht DOSSEG oder .MODEL an wie man es sonst macht.
Muss ich da was angeben? Oder bleibt es so?

Falls ihr was besseres habt um ein kleines OS in TASM aufzuziehen, dann fände ich es toll
einen Link oder ein TuT zu bekommen.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 16. November 2012, 17:28 »
Ich fürchte, das ist nicht mehr ganz zeitgemäß. Real-Mode-Segmentierung wie unter DOS macht keiner mehr, weil es einfach Mist ist.

Tutorials benutzen in der Regel C (das hier ist das von uns empfohlene), aber wenn du unbedingt Assembler benutzen willst, dann machst du eben das analoge in Assembler. Setzt natürlich voraus, dass du C zumindest lesen kann, und dass du Assembler gut genug kannst, um das alles umzusetzen.

Generell raten wir eher davon ab, größere Mengen Code in Assembler zu schreiben, weil es einfach sehr fehleranfällig ist.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 16. November 2012, 17:53 »
Hmm ich weis dass dass mit dem Dos net so toll ist.
Darum frage ich ja: Wie benutze ich es unter windows? Brauche ich einfach einen anderen Linker?
Ok ich werde versuchen den C code auszulesen :) evt. werde ich dann den übersetzten
Assembler Code hier rein stellen, damit es auch die Assembler freunde benutzen können.

Edit: Da ist sogar arm dabei :) Dass kann ich ja direkt an meinem Raspberry Pi testen.
Eine Sache: Gibt es da nicht Konflikte wenn ich TASM für Intel gelernt habe?
« Letzte Änderung: 16. November 2012, 17:55 von Manello »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 16. November 2012, 20:42 »
Hallo,

deine Assembler-Programme unter DOS benutzen den Real-Mode, Segmentierung und den int 21h für die Kommunikation mit dem Betriebssystem. All das kann von Windows-Programmen nicht verwendet werden, d.h. ein neuer Linker wird dir nicht helfen.

Jede CPU benutzt ihre eigene Assemblersprache. ARM-Assembler unterscheidet sich relativ stark von 8086-Assembler, dein TASM ist damit überfordert (ist er mit modernen x86-CPUs auch). Darum benutzt man Hochsprachen wie C, die sind grundsätzlich CPU-unabhängig.

Wenn du ein OS schreiben willst, dann tu das bitte in C, solange du keinen ganz bestimmten Grund hast, eine andere Programmiersprache zu verwenden. Sieh das als Aufforderung, C zu lernen. :-)

Gruß,
Svenska

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 16. November 2012, 20:46 »
Ich hab mich jetzt ewig auf Assembler vorbereitet :S
Gibt es da keine andere möglichkeit dass int 21h und Dosseg zu umgehen?
Bzw. möglichst alle Konflikte umgehen?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 16. November 2012, 21:12 »
Ich hab mich jetzt ewig auf Assembler vorbereitet :S
Gibt es da keine andere möglichkeit dass int 21h und Dosseg zu umgehen?
Bzw. möglichst alle Konflikte umgehen?

Bei DOS bleiben.

Unter Windows kommst du nur mit aktuellen Toolchains weiter. Was du dazu tun musst, ist übrigens in dem Tutorial im Wiki beschrieben.
« Letzte Änderung: 16. November 2012, 21:14 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

Manello

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 04. December 2012, 12:58 »
Sorry wenn ich den alten Thread wider hochhole :S

Also nach dem ich die ganzen Arbeiten usw. geschrieben habe ist endlich zeit für dass OS,
jedoch habe ich eine Frage:

Dass OS Tutorial in der Wiki bezieht sich auf ARM Architektur.
Ich besitze zwar einen "Raspberry Pie B Revision 2" aber kann ich es auch unter meinem Intel schreiben?
Ich habe einen "Intel I5 2500" also die "Sandy Bridge" Architektur.
Was muss ich dann anstatt .arm eingeben?
Kennt ihr evt. eine Prozessor-Befehlstabelle, die die der ARM und der Sandy Bridge vergleichen?
Also sozusagen dass ich nachsehen kann, mit der der ein oder andere ARM Befehl in Sandy Bridge
gleichzusetzen ist? Ich habe leider noch nichts gefunden.
Ich hoffe die Fragen sind verständlich.

(Möchte den ARM nicht benutzen weil ich sonst immer umbauen muss ( Tasttatur, Maus, Bildschirm etc.))

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 04. December 2012, 13:04 »
Hier ist unser Tutorial für x86-Prozessoren: http://www.lowlevel.eu/wiki/OS-Dev_f%C3%BCr_Einsteiger
Dieser Text wird unter jedem Beitrag angezeigt.

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 03. January 2013, 14:36 »
Hallo Manello ,
gebe doch mal das Stichwort "MiniOS" im Suchfenster ein.
Vieleicht hilft es ja ein wenig weiter?

Gruß Relbmessa

PS
Ich bewundere deinen Traum.  :-D
Wenn du durchhälst werden deine Probleme , mit steigenden Wissen ,
immer größer werden.
Aber verliere nicht den Mut , dann warten viele Antworten und noch mehr Fragen auf DICH  :evil:

 

Einloggen