Autor Thema: grundlagen? Assembler? C++? ...Vorschläge zu Themen :-)  (Gelesen 41068 mal)

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
Hi LowLevel-Gemeinde ! :-)

Ich hab ein bisschen im Forum gestöbert und mir die ganzen Beiträge reingezogen die sich um künftige Themen und Themen-Wünsche drehen.
Tja und dazu möcht ich nun auch meinen "Senf dazugenben" :  :-)

Kurz zu mir:
Ich programmiere seit 18 Jahren als Hobby und seit 6 Jahren auch beruflich als Web-Programmierer für PHP, MySQL, HTML usw.
Damals hab ich mit Maschienencode auf dem Z80 angefangen (ich betone MASCHIENENCODE !!! Also nicht "mov ax,10h" sondern E5 46 C9 BF ... usw.) und später auch mit Assembler auf Motorola 68000 Prozessoren.
Weil ich der Zeit etwas nachweine (man hat ja sooo viel über die Hardware gelernt) und auch fast alles verlernt habe, hab ich mir nun vorgenommen wieder in Assembler einzusteigen. Und wie geht das besser als mit dem programmieren einen eigenen Betriebssystems !!! :-)

Aber nun zu meinen Vorschlägen:
1. Wenn ihr mich fragt dann bitte bleibt hauptsächlich in Assembler! Alles was vor der Entwicklung einer GUI liegt und mit dem Kernal zu tun hat sollte meiner Meinung nach so Hardware-nah wie möglich geproggt sein. Nichts gegen C, aber bitte Vernachlässigt nicht den Assembler dabei....

2. Wie ich aus vielen Beiträgen entnehmen konnte gibt es hier viele die am liebsten "fertigen Code" im Magazien finden würden. Mir persönlich sind lieber Code-Teile die bestimmte Sachen und Technicken erklären.

3. Viele schreiben z.b. "Zeigt uns wie man eine Shell proggt, wie man eine GUI schreibt ..." usw. Ja, das ist alles wichtig. Aber ich finde es ist noch viel wichtiger Grundlagen zu vermitteln.
Also z.B.:
- genaue Erläuterung von schreibweisen wie z.b. 0x07c00h usw. ("x" ???)
- Technicken wie man z.B. erkennen und prüfen kann ob eine Hardware (z.b. das Floppy-Laufwerk) existiert oder nicht (und zwar ohne BIOS, wichtig im PM)
- wie genau funtioniert das Paging und der Speicher-Schutz im PM
- das Arbeiten mit Ports wenn man einen Kernal baut der im PM ganz ohne Bios alleine seine Hardware-Treiber laden soll...
- gibt es immer den Bildschirm-Speicher ab B8000h, oder gibt es auch Fälle wo dieser wo anders liegt und wie stelle ich das fest....
- was muss ich tun damit mein Kernal ein im ELF-Format forliegendes Programm laden und ausführen kan...?
- ...usw.

Also: Das sind nur Vorschläge die mir jetzt so spontan eingefallen sind. Manches davon wurde schon behandelt und maches ist ja für die nächsten Ausgaben angekündigt.
Ich will nur zeigen was ich meine mit "Grundlagen vermitteln".
Nicht das wir nach einem Jahr feststellen das wir alle "das selbe" OS entwickelt haben weil jeder nur den Code kopiert und zusammengesetzt hat... :-))

Naja, das wollt ich mal als Anregung schreiben. Ist natürlich alles kein "muss" und nur als Vorschlag gemeint. Fertige Sachen in C sind ja auch interessant.
Euer Magazien ist spitze! Nur bleibt hatl auch Eurem Namen treu: "LowLevel" :-)

so viel für jetzt
Gruß BigOlly
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #1 am: 08. April 2004, 13:21 »
Hehe danke für den Post.

Deinen Ansatz finde ich sehr gut. So ist auch das vermitteln der Dinge hier gedacht. Das diese mehr zur Theoretischen Aufklärung dient und man dann sein eigenes Zeug selbst draus bastelt.

Auch deine Vorschläge für die Grundlagen sind gut. Und ich denke das wir gerade dieses ja auch ganz gut vermitteln.

Allerdings denke ich wäre es Zeitverschwendung extra zu erklären was das "x" bei 0x7c00 bedeutet. Es soll ja kein Kurs über Assembler sein, sondern über Betriebssysteme. Und wenigstens ein bisschen sollten sich die Leute auch selbst mit den Dingen beschäftigen und Nachlesen. Trotzdem versuche ich immer möglichst viel Hintergrundwissen mit in die Tutorials zu packen.


Ob Assembler immer die erste Wahl ist ist so ne Sache. Ich persöhnlich finde Assembler recht cool und ich schreibe auch oft kleine Funktionen in Assembler die sich meiner Meinung nach damit einfach geschickter Lösen lassen.

Aber mit C kommt man einfach schneller vorran und es ist einfacher zu lesen.
Und gerade bei den Grundlegenden Dingen eines OS muß man auf Grund der Ports usw eh noch häufig genug auf Assembler zurückgreifen.

Vielleicht hast du ja selbst (wenn du sagst das du das eigentlich schon ein wenig kannst) ja Lust ebenfalls ein paar Artikel oder Tutorials hier beizutrager. Wir sind für jede helfende Kraft dankbar.

PS: Wie schon mehrfach erklärt steht LowLevel nicht umbedingt für Assemblerprogrammierung, sondern für das LowLevel zur Programmierung generell. Sprich programmieren eines OS :)
----------------------
Redakteur bei LowLevel

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 08. April 2004, 14:46 »
Vielleicht könnte man ja eine eigene Asm-Tut Reihe hier machen*g*, damit die ,die zu faul sind nach sowas zu suchen das auch lernen können und das was in asm hier an code kommen sollte besser verstehn. Denn ich glaube viele kapiern hier Zeilen wie mov ax,80h nicht mal. Und das sollte schon der fall sein, denn auch wenn es bei Lowlevel nicht um ständige programmierung in asm geht, kommt man auf keinen Fall drum herum. Um in den PM zu kommen muss mans machn, beim Bootloader... und für die Treiber im PM mal sowieso. Also auch wenns in C bequemer ist sollte man sich bei der OS-Programmierung schon in asm auskennen oder nich?

PS: Ich könnte die asm-tut's zur not auch selbst machen wenn sich keiner findet;)

__Roshl
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #3 am: 08. April 2004, 14:56 »
Ja wenn du ASM Tuts machen möchtest dann gerne :)

Da würde ich dir aber raten das in mehrere Abschnitte zu packen, da ASM Coding doch recht umfangreich ist.

Und der Syntax sollte wenns geht auf NASM abgestimmt sein, da dieser wohl am meisten benutzt wird.

Kannst mich ja mal im ICQ anquatschen.
----------------------
Redakteur bei LowLevel

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 08. April 2004, 15:50 »
Ja klar, wenn ich was interessantes hab oder ergänzen kann schreib ich gern nen Artikel für euer Magazin.
Nur wird es vielleicht noch ein bisschen dauern da ich was den x86 Assembler betrifft wieder ganz von vorne anfange. Man glaubt ja garnicht wie sehr einen das Objektorientierte programmieren von den Grundlagen wegbringen kann... :-)
(Bei mir war das übrigens Delphi mit VCL und Konsorten)

Da ich keine Literatur über den x86 und seine Befehle habe bzw. deren Maschienen-Code, hab ich erstmal angefangen mir die entsprechende Literatur zu besorgen.
(Das würde ich übrigens jedem empfehlen der sich für "unsere" Materie interessiert und hier mitmchen will)
Da wären z.B. "PC-Intern" von Data Becker oder "Das Hardware-Buch" von ADW sowie Assembler-Literatur wie "Assembler" von Reiner Backer (rororo) und "Assembler Ge-Packt" von Joachim Rohde.
(Dies soll auch gleich eine Literatur-Empfehlung sein für alle anderen hier, die sich mit dem Thema beschäftigen)
Die PC-Intern-Reihe kenn' ich noch aus früheren Zeiten und die zwei Assembler-Bücher bin ich grad am lesen.

Übrigens nochmal zu dem "0x0C700h": Selbst ich weiss das nicht 100%-tig. Als die Assembler-Bücher noch nicht da waren hab ich mal in meinen alten Büchern und Aufzeichnungen über den M68000-Prozessor gestöbert.. dort ist so eine Schreibweise nicht bekannt. Auch beim Z80 nicht.
(Übrigens ist der Assembler-Code beim M860x0 viiieeell schöner und einfacher, aber das nur nebenbei :-) )
Das gibt's anscheinend nur beim x86. Auch in den Assembler-Büchern zum x86 hab ich es nicht gefunden. Ich hab mir das auch nur zusammenreimen können: Meiner Meinung nach ist das "nur" eine Schreibweise, das "0x" könnte man auch weglassen. Ich denke es verdeutlicht das man den "Segment-Adressraum" also eigentlich den Offset meint.
Aber vielleicht ist meine erste Erklährung hier im Forum ja auch gleich falsch! :-)
Ich wette die meissten hier könnten das nicht erklären.

Aber gut, das reicht fürs erste, sonst wird's wieder ein Roman.... Das heb ich mir auf für den ersten Artikel bei Euch... :-)
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #5 am: 08. April 2004, 15:54 »
Also das 0x... heist lediglich das die Zahl dahinter im Hexadezimalssystem gemeint ist;) amn kann auch ein h hinter die zahl machn also 1234h is das selbe. Dient dazu das der assembler weiss ob es dezimal hexa octa oda binär is;)
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 08. April 2004, 15:59 »
@Roshl:
Hey, dann ist ja "0x0C700h" doppelt gemoppelt! :-)

Seht ihr, ich denk wieder viel zu kompliziert!
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

caga

  • Beiträge: 22
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 08. April 2004, 16:00 »
bei der sache mit den asm-tuts würd ich mich auch ganz gern beteiligen, da ich total auf asm abfahre! ich hab, als ich noch windows benutzte, alle meine progs in asm geschrieben. durch linux bin ich davon jetzt allerdings abgekommen

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #8 am: 08. April 2004, 16:02 »
Äääähm also ob der assembler 0x0C700h überhaupt aktzeptiert weiss ich garnich:P aber wenn du beides machst biste nich im Zahlensystem auf basis 32:P...schön wäres zwar und umrechnen is auch kein prob aber 1.brauch keiner 2.müssten wir da fast das ganze alphabet zu nehm und 3.könnte keiner lesn^^
ich denk aber für gewöhnlich auch kompliziert:P also you are not alone....
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #9 am: 08. April 2004, 16:33 »
Also dann gleich ein Aufruf an alle die gerne etwas über Assembler schreiben möchten.

Meldet euch einfach bei mir im ICQ und wir koordinieren das ein wenig. Es kann ja jeder einen kleinen Beitrag über ein bestimmtest Thema schreiben und wir fügen das dann im Ressource Center zusammen.

Wie gesagt. Sollte NASM Syntax sein, da dies wohl der quasistandard ist :)

Mein UIN: 59868486

PS: Wenn doch so viele in ASM schreiben, dann lasst mir doch einfach mal ein paar nützliche ASM Routinen zukommen und ich stelle diese ebenfalls ins Ressource Center.
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 13. April 2004, 10:23 »
Hm...also ein deutschsprachiges ASM-Tutorial wäre super da ich Assembly gerade erst lerne. (habe mit C++ angefangen und bin dann für Maschinennähe mehr auf C umgestiegen.) Und bisher habe ich nur englisches Zeug gelesen, welches zwar sehr simpel war allerdings ist ein Deutscher Artikel zur vertiefung doch besser :)

Und Teejay, wo kann ich mir denn anschauen wie die Funktionen setmem und memcpy aufgebaut sind, die in deinem C++ im Kernel-Tutorial angegeben sind?

Saberforce

  • Beiträge: 11
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 13. April 2004, 11:56 »
*wink*

ich würde auch ein thema über assembler beitragen
da ich diese sprache schon seit amiga programmiere
ich sie auf dem pc zwar nicht so gebräuchlich finde
aber ich mache mit ;) ich melde mich dann über ICQ
bei dir


greetz Saber

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #12 am: 13. April 2004, 12:14 »
Also wenn wir hier schon soviele ASM-Coder sind sollten wir das irgendwie gemeinsam machen oder? Hat nicht viel Sinn wenn jeder für sich werkelt und nix übereinander passt. Ich hatte schon ein ASM Tut geschrieben und es TJ mal geschickt (zum überarbeiten bisher keine Zeit). Vielleicht machen wir alle zusammen ne Tut-Reihe stellvertretend für die LowLevel-Page hier. Da jeder hier ICQ zu haben scheint können wir das ja darüber koordinieren.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #13 am: 13. April 2004, 12:40 »
Jo sag ja. Meldet euch bei mir und wir besprechen das. Wir sollten dann erstmal grob einteilen welche Themen wir behandeln wollen und wie wir das in Kapitel aufteilen.
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 14. April 2004, 13:10 »
Also ich melde mich als Tester ;)

Ivan Keen Lee

  • Beiträge: 8
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 14. April 2004, 13:40 »
Jo, hurra! Ich hoffe  euer Vorhaben gelingt. Denn ich suche auch schon lange ein Assembler-Tutorial! Und das in Deutsch und mit NASM. *sabber* Oh tschuldige mir läuft das Wasser schon aus dem Mund :). Wie sieht die Lage denn jetzt  aus oder war  es nur eine Schnapsidee?

MFG
Ivan Keen Lee

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #16 am: 14. April 2004, 16:07 »
Das ganze ist in Arbeit;) (me is Mitautor also ich werds wissen;))
Also bischen Geduld noch wir ham die Zeit auch nicht im Lotto gewonnen^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #17 am: 14. April 2004, 17:38 »
Hier mal die Übersicht über die Kapitel die wir so zusammengestellt haben:

1. Binäres/Hexadezimales Zahlensystem und Datentypen
2. Aufbau der CPU (Register und Co)
3. Aufbau des Speichers (Arbeiten mit Segment und Offset)
4. Arbeiten mit Variablen
5. Der Stack (Push und Pop)
6. Funktionen (Call und Ret)
7. Funktionsparameter und lokale Variablen
8. Ports

Die ersten drei sind in Arbeit.
Weitere Kapitel werden dann noch folgen. Diese werden sich dann mit den einzelnen Asm-Befehlen in Beispielen beschäftigen.
----------------------
Redakteur bei LowLevel

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #18 am: 14. April 2004, 19:07 »
Also wenn das Asm-Tut so einfach bleibt, könnte ich auch ein Kapitel oder mehr schreiben. Also soll ich was schreiben???

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #19 am: 14. April 2004, 20:04 »
Meld dich im ICQ.
59868486
----------------------
Redakteur bei LowLevel

 

Einloggen