Lowlevel

OffZone => Offtopic => Thema gestartet von: Chris Code am 12. September 2010, 09:33

Titel: Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 09:33
Hallo

Gleich vorweg, meinen anderen Beitrag habe ich gelöscht, weil dabei nichts sinnvolles zu stande kam xD
Ich werde mein OS Projekt im alleingang beginnen und gelegentlich dessen Status in einem Wiki veröffentlichen.

Doch nun zu meinem eigentlichen Thema. Ich möchte ein Magazin schreiben im  PDF Format, das sich wirklich von Grund auf mit Lowlevel beschäftigt. Da ich öfter gelesen habe das man Grundkenntnisse in Assembler und Hardware besitzen sollte und dies ein wenig vermisse.

Diese PDF soll in 3 bis max. 4 Große Themen aufgeteilt werden.

1. Computer (Beschäftigt sich mit der Arbeitsweise des Computers und dessen Hardware)
2. Assembler (grundkurs etc. unter der 80x86 Architektur)
3. C/C++ (grundkurs etc. )
4. Betriebssystementwicklung (Beschäftigt sich mit der Entwicklung von Betriebssystemen auf der 80x86 Architektur von Intel)

Als ich Angefangen habe Assembler zu proggen viel es mir ziemlich schwer vieles zu verstehen. Das lag am mangel an Grundwissen.  Um mein wissen zu vertiefen und es kommenden Generationen von OS programmierern einfacher zu machen möchte ich nun dieses Magazin schreiben und Suche Leute die sich mit der Materie auskennen und es vor veröffentlichung durchlesen und Feedback geben.

Das Konzept dieses Magazins ist einfach:

1. Leihensprache verwenden damit Leute die noch nie zuvor programmiert haben es auch verstehen
2. viele Illustrationen und Bilder verwenden
3. Blickwinkel: Ich habe gemerkt dass ich etwas besser kapiert habe je mehr verschiedene Artikel bsw. Toturials ich dazu gelesen habe. Es Hilft ungemein beim Lernen ein Thema aus verschiedenen Blickwinkeln zu betrachten.
4. Learning by doing... am ende eines jeden Magazins einen kleinen Test ob man sich was gemerkt und verstanden hat.
5. wenn ich den Zeitplan einhalten kann sollte jedesmal innerhalb von 1 - 2 wochen ein Magazin  erscheinen.

Ich erwarte hier keine Meinungen zu diesem Thema da es schon feststeht das ich es machen werde, alleine schon für mich. Ich suche lediglich 1 bis 2 Leute die sich bereit erklären es sich vor veröffentlichung durchlesen und ein Feedback geben.

Vielen Dank!
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 12. September 2010, 09:46
Moin

Also die Themen finde ich recht gut.
Hab ich das recht verstanden, das du 4 magazine veröffentlichen willst?
es wäre recht gut. wenn du nach dem 4. Magazin weiterere Magazine, die sich mit OS-DEV beschäftigen, veröffentlichst. Also etwas Fortschrittlichere Themen. z.B. schalten in den LongMode usw.

Also ich würde das Magazin Probelesen, auch bezüglich Rechtschreibung.

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 09:57
Moin

Also die Themen finde ich recht gut.
Hab ich das recht verstanden, das du 4 magazine veröffentlichen willst?
es wäre recht gut. wenn du nach dem 4. Magazin weiterere Magazine, die sich mit OS-DEV beschäftigen, veröffentlichst. Also etwas Fortschrittlichere Themen. z.B. schalten in den LongMode usw.

Also ich würde das Magazin Probelesen, auch bezüglich Rechtschreibung.

Programm Noob

Vielen dank für die schnelle Antwort.

Zum Thema Magazine. Nein es sollen nicht 4 Magazine werden sondern 4 Große Themen die ich in mehrere Magazine aufteile (vieleicht sogar als wiki?), damit man innerhalb von 1 - 2 wochen nicht zu viel stoff zu lernen hat. Diese 4 großen Themen habe ich aufgelistet. damit sollte klar sein das OS def aufgeteilt wird auf einzelne Magazine. als nachschlagewerk würde ich die magazine für OS Dev auch mit zusätzlichen Dingen wie BIOS Interruptlisten erweitern.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 12. September 2010, 10:05
OK dann habe ich deinen Text ein wenig falsch interpretiert.
Ich würde aber die ersten 3 Themen nicht so ausfühlich behandeln, also vieleicht ein Magazin erstmal nur pro Thema und dann das 4. Tehma auf viele Magazine aufteilen.
Du kannst ja am besten in den Magazinen ein Tutorial machen, was mit einem einfachem Kernel anfängt, dann Textausgabe, Speicherverwaltung, Paging usw. immer weitergeführt wird.
In jedem Magazin, wird dann ein Teilbereich behandelt. Am besten auch Thematisch passend zum Magazin, also wenn es in dem Magazin um Speicherverwaltung geht, dann auch das Tutorialstück dzu in dem Magazin.

Wenn sich anhand des Feedbacks zu erkennen gibt, das die ersten 3 tehem doch etwas ausfühlicher behandelt werden sollen, dann kannst du das noch etwas mehr behandeln. Diw meisten di ehier sind, können nämlich programmieren.

Wenn du ein Tutorialmachst, solltest du es wenns geht in C machen, damit es alle Verstehen. weil Ich persönlich finde Assembler sehr unübersichtlich.

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 10:13
Gute Idee das mit der Aufteilung in einzelne Bereiche und Toturials dazu..

Da es aber ein Magazin werden das auch für anfänger gedacht ist sollte zumindestens Assembler und C++ aufgeteilt werden da es ein magazin ist und keine buch^^.. das thema Computer werde ich wahrscheinlich in ein Magazin quetschen können... Es soll nicht nur für die die hier sind gedacht sein.

Frage: Kennst du ne gute Seite zum Thema wo ich kostenlos hochladen könnte?
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Cool-Andy am 12. September 2010, 10:16
Meinst du jetzt Onlinespeicher (zum verlinken) oder einen richtigen Websitenhoster?
Mir fällt jetzt spontan funpic.de ein.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 10:17
Meinst du jetzt Onlinespeicher (zum verlinken) oder einen richtigen Websitenhoster?
Mir fällt jetzt funpic.de ein.
Im prinzip egal... es sollte halt kostenlos sein und jeder sollte es downloaden können...
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: kevin am 12. September 2010, 11:03
Hm, wie wär's mit lowlevel.eu? ;)

Du hast ja sowieso darüber nachgedacht, es in ein Wiki zu packen. Da würde es sich anbieten, eine neue Kategorie anzulegen und alles dort drin zu machen. Ansonsten, wenn es doch kein Wiki sein soll, finden wir dafür sicher auch noch irgendwo Platz.

Aber einen Programmierkurs mit einzubauen, halte ich doch für sehr gewagt. Ohne gute Programmierkenntnisse geht es nicht. Dass man die konkreten Sprachen Assembler und C noch ein bisschen behandelt, ist wohl okay. Aber du kannst nicht Leuten anhand von OS-Dev das Programmieren beibringen. Es ist schon frustrierend genug, wenn man sein Handwerkszeug kann.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 11:24
Hm, wie wär's mit lowlevel.eu? ;)

Du hast ja sowieso darüber nachgedacht, es in ein Wiki zu packen. Da würde es sich anbieten, eine neue Kategorie anzulegen und alles dort drin zu machen. Ansonsten, wenn es doch kein Wiki sein soll, finden wir dafür sicher auch noch irgendwo Platz.

Aber einen Programmierkurs mit einzubauen, halte ich doch für sehr gewagt. Ohne gute Programmierkenntnisse geht es nicht. Dass man die konkreten Sprachen Assembler und C noch ein bisschen behandelt, ist wohl okay. Aber du kannst nicht Leuten anhand von OS-Dev das Programmieren beibringen. Es ist schon frustrierend genug, wenn man sein Handwerkszeug kann.

Also  im Prinzip kann ich ja beides machen.. sowohl wiki als auch pdf denn ich werde eh nicht an einem Tag eine ganze Wikiseite schreiben... und soviel sei gesagt... ich biete diese Kurse (Assembler und C/C++) an damit man Programmieren lernt ;) darum hab ich bereits davon gesprochen das sie sehr ausführlich sein sollen... die haben mit OS dev an dich noch nichts zu tun... aber ich finde das sie in die lowlevelprogrammierung mit rein gehören,.. den ein absoluter newbie muss erst im web schauen und sich mühsam alles zusammen suchen .. mit meinem konzeptvorhaben gehts vieleicht schneller.

 :mrgreen:
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 11:46
Ich finde das Taljeth im prinzip schon recht hat, aber was eine möglichkeit wäre, v.a. für assembler, das man auf ne Trick-sammlung anlegt( bestimmte möglichkeiten was zu beschleunigen oder kleiner zu bekommen, besondere trickige algorithmen.....) da könnte man dann z.B. auch sowas wie ein "Fortgeschrittenen-Tutorial" mit einbauen vllt über themen die normale Tuts weniger behandeln.


nur son denkanstoss. sonst gute Idee Chris Code

mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 11:54
Ich finde das Taljeth im prinzip schon recht hat, aber was eine möglichkeit wäre, v.a. für assembler, das man auf ne Trick-sammlung anlegt( bestimmte möglichkeiten was zu beschleunigen oder kleiner zu bekommen, besondere trickige algorithmen.....) da könnte man dann z.B. auch sowas wie ein "Fortgeschrittenen-Tutorial" mit einbauen vllt über themen die normale Tuts weniger behandeln.


nur son denkanstoss. sonst gute Idee Chris Code

mfg

Ich glaube nicht das ich alleine irgendwelche Trickigen Algos hinbekomme die andere Programmierer hier nicht schon kennen^^
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 11:58
das is ja der Sinn an nem Wiki, muss ja net einer allein schreiben ;)
Ich dachte dabei eher an die ASM-pros hier^^


mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 12:04
das is ja der Sinn an nem Wiki, muss ja net einer allein schreiben ;)
Ich dachte dabei eher an die ASM-pros hier^^


mfg

Tja da musst du die ASM pros fragen...  :-D nicht nur michich konzentrier mich lieber auf mein vorhaben weil das schon relativ positive beiträge mit sich gebracht hat
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 12. September 2010, 13:44
Chris Code ich glaube du hast mich miss verstanden. Ich meint edas du ein Magazin zu Computer schreibst, ein Magazin zu Assembler und eins zu C/C++, wenn dann die Nachfrage nach weiteren Programmier-Magazinen ist, kannst du ja noch was dazu machen.

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 12. September 2010, 14:20
Gleich vorweg, meinen anderen Beitrag habe ich gelöscht, weil dabei nichts sinnvolles zu stande kam xD
Sehr schade. Traust du dich nicht, dass andere deine Fehler der Vergangenheit sehen können? Oder hat es dir nicht gefallen, dass die Meinungen im Thread nicht zu dem passten, was du gern gehabt hättest?

Es war nicht der erste Thread dieser Sorte. Die Reaktionen waren ebenfalls dieselben.

Denk mal drüber nach.
</offtopic>
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 15:17
Gleich vorweg, meinen anderen Beitrag habe ich gelöscht, weil dabei nichts sinnvolles zu stande kam xD
Sehr schade. Traust du dich nicht, dass andere deine Fehler der Vergangenheit sehen können? Oder hat es dir nicht gefallen, dass die Meinungen im Thread nicht zu dem passten, was du gern gehabt hättest?

Es war nicht der erste Thread dieser Sorte. Die Reaktionen waren ebenfalls dieselben.

Denk mal drüber nach.
</offtopic>

Ich hab den Grund genannt warum ich das Thema gelöscht habe... Und wenn du keine normalen Beiträge schreiben kannst die zum Thema gehören, stattdessen mit deinen Kommentaren kommst die schon in richtung provokation eines Streits gehen dann lass es lieber sein... tuh nicht so als hättest du die ultimative menschenkenntnis.. wahrscheinlich schleischst du hier im forum rum und hinterlässt überall deine kommentare xD
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 15:21
Chris Code ich glaube du hast mich miss verstanden. Ich meint edas du ein Magazin zu Computer schreibst, ein Magazin zu Assembler und eins zu C/C++, wenn dann die Nachfrage nach weiteren Programmier-Magazinen ist, kannst du ja noch was dazu machen.

Programm Noob

nein ich hab dich nicht missverstanden und ich schreibe auch mit anderen also solltest du erstmal lesen was andere geschrieben haben.. im mom ist es so das ich bei dem bleibe was ich dir gesagt habe... nur das ich die magazine nicht als pdf sondern als wiki hochlade... alles klar soweit?
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 12. September 2010, 16:32
wahrscheinlich schleischst du hier im forum rum und hinterlässt überall deine kommentare xD
Korrekt.

Was die Algorithmen angeht: Eine Übersicht über schnelle Algorithmen für häufige Anwendungsfälle würde ich sehr begrüßen, da ich mich dort nicht besonders auskenne. Diese würde ich allerdings gerade nicht in Assembler sehen wollen, sondern in einer Hochsprache/Pseudosprache.

Assembler ist grundsätzlich komplizierter zu verstehen und CPU-Abhängig, besonders, was die Ausführungsgeschwindigkeit betrifft. Außerdem sind Optimierungen, die für den 8086 galten heute meist nicht mehr aktuell (oder relevant), dafür gibt es ganz neue Klassen von Optimierungen, wie z.B. Cachelokalität, Locking, Copy-On-Write oder auch Scatter/Gather-IO. Soetwas würde ich sehr begrüßen.

Chris: Ich würde es auch mögen, wenn du gelegentlich deinen OS-Status im Forum postest. Das soll keine Wertung sein.

Für das Korrekturlesen erkläre ich mich ebenfalls gern bereit.

Gruß,
Svenska
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 16:52
Naja das mit den Algos kam von mir :P
Und ja ich geb zu, das ich das in ASM vorgeschlagen hab hängt vllt ein bisschen damit zusammen das ASM meine muttersprache ist und ich alles mögliche damit schreibe ^^
aber ich stimm dir schonn zu auch in Hochsprache wär sowas interessant.
aber leider will Chris Code ja keine hilfe also werd weder ich da zu ASM was schreiben kann noch iwer anders zu Hochsprachen ;) aber ich find tdem das das ne Idee ist die man vllt weiterverfolgen sollte, quasi so "tricks und kniffe" kategorien anzulegen, einmal allgemein(pseudocode), einmal speziell für sprachen oder compiler.

könnte man ja mal brainstormen ob noch mehr leute das gut finden.

mfg AGGRO
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 19:12

aber ich stimm dir schonn zu auch in Hochsprache wär sowas interessant.
aber leider will Chris Code ja keine hilfe also werd weder ich da zu ASM was schreiben kann noch iwer anders zu Hochsprachen ;) aber ich find tdem das das ne Idee ist die man vllt weiterverfolgen sollte, quasi so "tricks und kniffe" kategorien anzulegen, einmal allgemein(pseudocode), einmal speziell für sprachen oder compiler.

mfg AGGRO

Naja wenn ich keine Hilfe will und bei meinem Vorhaben bleibe , du aber gerne diese tricks und kniffe beschrieben hättest warum machst du das nicht einfach zu deinem projekt? ;) ich würde das thema auch sehr begrüßen aber es ist halt nicht das was ich machen will  :-D

lg

So 2 Fortgeschrittene Programmierer die probelesen reichen mir schon also erkläre ich das thema für abgeschlossen..

Dann könnten wir jetzt eigentlich zum Thema Tricks und Kniffe kommen die das Programmieren vereinfachen sollen

mich würde es freuen wenn AGGROStar1991 mehr ins detail gehen würde... zb. sind das nur quellcodebeispiele oder auch tipps wie man etwas beschleunigen kann etc. ?
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 19:23
naja quellcodebeispiele u.a. auch wie man was beschleunigen kann ;)
zum beispiel zwei tipps die ich da so kenne für asm:
zum register nullen das register mit sich selber xorn, also xor eax,eax statt mov eax,0x0.
bringt ne ersparnis von einem byte und is gleich nochn bisschen schneller. gut. kennen viele.
2.( und das kennen bedeutend weniger leute) bei pentium aufwärts IMMER statt inc iwas
add iwas,1 nehmen. weil ab pentium braucht das erste einen cpu-takt, das andere nur nen halben weil die ALU bisschen optimiert wurde ;)

Für allgemein bessere Algos( ausserhalb von asm) bin ich net so der Experte, da könnten sich ja unsere Hochsprachler mal äussern ;)


mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 19:37
das mit dem register in sich selbst naja.. ok für asm anfänger... ^^vieleicht sollten wir einfach anfangen und mal sehen ob es sich lohnt :-D
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 19:42
ja wie gesagt, ich hätte auch noch mehr tipps und kniffe parat so is ja nui nich :D aber wenn wir nich nochn paar hochsprachler überreden können wirds doof weil lang nich jeder schreibt in asm( eig die wenigsten) wär dann bissel verschwendete arbeit.


mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 19:47
ja wie gesagt, ich hätte auch noch mehr tipps und kniffe parat so is ja nui nich :D aber wenn wir nich nochn paar hochsprachler überreden können wirds doof weil lang nich jeder schreibt in asm( eig die wenigsten) wär dann bissel verschwendete arbeit.


mfg

Ich schreib in Hochsprachen aber mir fallen keine Tipps ein außer das grundlegende... sauberer Code und so

Ich habe mal ein Tipp für übersichtlichen Code gehört, dass man jeden Schritt eines Algorithmus in eine eigene Funktion packen sollte , was ich aber für großen MIst halte O.O
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 19:50
deswegen mein ich ja die Hochsprachler mit Ahnung sollen sich äussern^^
ich kann zu asm usw bestimmt vieles schreiben das zumindest ich selbst interessant finde aber das was ich mich halt frage ob sichs lohnt weil wegen nachfrage ;)

Und zu deinem Tipp: zumindest in asm mach ich das in nahezu allen fällen so ;)

mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 19:57
deswegen mein ich ja die Hochsprachler mit Ahnung sollen sich äussern^^
ich kann zu asm usw bestimmt vieles schreiben das zumindest ich selbst interessant finde aber das was ich mich halt frage ob sichs lohnt weil wegen nachfrage ;)

Und zu deinem Tipp: zumindest in asm mach ich das in nahezu allen fällen so ;)

mfg

Nach deinem letzen Satz zu urteilen tust du also jede einzelne Anweisung wie mov ax, ex in eine eigene Funktion schreiben xD... ich glaub du hast das nicht verstanden und wenn doch solltest du deine Art und Weise zu proggen nochmal überdenken xD
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 20:00
Ok wir reden aneinander vorbei^^
aber z.B. bei nem Interrupt den ich auslösen will mit mehr als 1-2 parametern, das ist ein algorithmenschritt der augelagert wird^^
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 20:07
Ok wir reden aneinander vorbei^^
aber z.B. bei nem Interrupt den ich auslösen will mit mehr als 1-2 parametern, das ist ein algorithmenschritt der augelagert wird^^


Meiner ''professionellen'' meinung nach sollte eine Auslagerung nur aus folgenen Grund statt finden

Spätere Wiederverwendung oder mehrere Algos die den gleichen Teilschritt ausführen .. bestes Beispiel wäre einen String ausgeben
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 12. September 2010, 20:24
naja du vergisst den grund warum ich das in assembler mache: damit man noch iwann mal durchsieht ;)
allerdings mach ich das dann oft nich als richtige funktion, sondern mit jumps

mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 12. September 2010, 20:27
naja du vergisst den grund warum ich das in assembler mache: damit man noch iwann mal durchsieht ;)
allerdings mach ich das dann oft nich als richtige funktion, sondern mit jumps

mfg

tja das ist wieder definitionssache .. morgen abend hab ich viel zeit ... da fang ich mhh mit den Computergrundlagen an
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 13. September 2010, 01:48
Moin,

die Sache mit "xor ax,ax" gegenüber "mov ax,0" spielt keine Rolle mehr (du hast heute an Cache, was früher RAM war). Die "inc ax" statt "add ax, 1" ist auch irrelevant geworden (ab PPro superskalar, außer Intel Atom grundsätzlich OutOfOrder-Ausführung, die Pipelinegeschichte ist wichtiger). Wenn du solche Tricks magst, dann denke lieber an loop-unrolling oder andere - höher angesiedelte - Tricks. (Aber hier noch einer: AMDs Opteron hat schnelle 64bit-Multiplikation, Intels Core2 braucht das Vielfache an Zeit.) Der Compiler kennt ohnehin wesentlich mehr Tricks als du, außerdem kennt er auch Fehler besser (ältere Opterons machen bei Branch-Prediction alles falsch, wenn ein RET kommt, daher nutzt man REP RET und der folgende Code ist wesentlich schneller).

Bei Algorithmen denke ich spontan an Quicksort, Hashtables u.ä. Da ich damit aber nur selten arbeite, müssten die Leute ran, die sowas kennen. Auch bei Schedulingfragen gibt es schnelle und langsame Algorithmen (z.B. Prozess-Scheduler O(1) von Linux, der inzwischen nicht mehr benutzt wird, oder die I/O-Scheduler fallen mir da ein). Solche Optimierungen - oder Planungen im Voraus - bringen meist wesentlich mehr, als einzelne Instruktionen zu optimieren.

Ein Cache-Miss kostet bei einem Pentium M etwa 240 Zyklen, ein L1-Cache-Hit etwa 3 Zyklen (http://www.akkadia.org/drepper/cpucache-slides.pdf), das ist wesentlich teurer. Ob die Angabe in Buszyklen ist (die sind wesentlich langsamer), weiß (und glaube) ich nicht.

Gruß,
Svenska
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 13. September 2010, 07:15
Danke für den Tipp Svenska (:
gut das mit dem ersten war mir auch mehr oder weniger klar, aber das 2., das das obsolet is wusst ich wirklich nich^^ naja das es bei mir klappt liegt vllt an den CPUs mit denen ich arbeite(testpc pentium 200Mhz) :D
omg ich brauch wirklich nen neuen PC, fühl mich wien Dino :P
und naja das ein compiler alles so ausnutzt, wage ich manchmal ein bisschen zu bezweifeln wenn ich mir disassemblierten code angucke ;) aber im grossen und ganzen stimmts schon das die ASM-nischen wenn man kein freak is( so wie ich :P) immer kleiner werden^^


mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: erik.vikinger am 13. September 2010, 11:33
Hallo,


aber im grossen und ganzen stimmts schon das die ASM-nischen wenn man kein freak is( so wie ich :P) immer kleiner werden^^
Diese Nischen sind schon seit Jahren quasi ausgetrocknet. Es gibt nur sehr wenige Dinge die von den Compiler-Entwicklern (und auch den CPU-Entwicklern) nicht berücksichtigt werden.

Und wie hier schon andere geschrieben haben: Ein guter Algorithmus reißt in aller Regel mehr raus als jeder Assembler-Trick!


Grüße
Erik
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 13. September 2010, 11:53
Man kann aber den besten Algorithmus noch mit solchen Asm Tricks verbessern ;)

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 13. September 2010, 16:07
Ist aber nicht realistisch.

Entweder du opferst xy Stunden für ASM-Ticks oder für ein sauberes, schnelles Design. Mal abgesehen handelt es sich hier um Freizeitbeschäftigungen, richtig? Da ist beides ohnehin nicht drin.

Sag dem Compiler lieber, dass du speziell für die CPU erzeugten Code möchtest, lies dich ein bisschen ein (z.B. hier (http://dl.fefe.de/optimizer-isec.pdf)) und erzeuge les- & wartbaren Code. Und kenne deinen Compiler. :-)

Gelegentlich ist es sinnvoll, dem Compiler ein paar Hilfen zu geben, wenn er bestimmte Sachen nicht automatisch (weg)optimiert. Zumindest GCC und LLVM sind da aber besser als jeder Programmierer. Abgesehen davon hat niemand was davon, wenn du per Hand auf einen Pentium 180 Stepping 3 optimierst - den hat eh keiner.

Aggro: Nutzt du eigentlich auch MMX oder eher nicht? Weil der Compiler kann das auch nutzen, wenn du ihm davon erzählst... und MMX ist schneller als kein MMX.

Schlusswort: Es gibt einen Grund für handoptimierten ASM-Code: Videocodecs. Riesige Datenmengen, unglaubliche Wiederholungen des gleichen Codes, komplizierte Operationen. Da gibt's ein paar Blogposts von den x264- und ffmpeg-Leuten, die da ein paar Sachen ausplaudern. Das trifft aber nicht wirklich auf OS-Dev zu.

Gruß,
Svenska,
und tschuldigung für die langen Posts von mir.

edit: aktuellere Fassung verlinkt, von 2008 statt von 2007... also auch nicht ultramodern, aber gut.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: AGGROStar1991 am 13. September 2010, 17:16
ja ich nutz mmx aufm testpc, auf dem andern wo ich glatt nen amd 2400 xp+ hab sogar neben mmx SSE und 3dNOW. aber naja das es solche diskus war ich vorbeteitet^^
Ich bin halt ASM progger und das weils halt einfach meine Lieblingssprache(und "Muttersprache", bin nebenbei virenschreiber usw und entwickle für DOS) ist, auch wenn ihr jetzt alle sagt es macht geschwindigkeitsmässig keinen sinn^^ tdem seh ich da halt wesentliche vorteile ;)
aber jedem das seine^^
Nochn kleiner Nachtrag: schliesst denn ASM ein sauberes, schnelles Design aus???


mfg
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: erik.vikinger am 13. September 2010, 17:38
Hallo,


schliesst denn ASM ein sauberes, schnelles Design aus???
Nein, natürlich nicht. Aber sowas wird durch Assembler eben nicht gerade erleichtert, der Programmierer braucht noch mehr Selbstdisziplin als eh schon. Wenn Du das kannst ist das toll aber viele können es leider nicht. Es gibt etliche Leute die bekommen noch nicht mal in einer Hochsprache ein sauberes SW-Design hin, solchen Leuten kann man von Assembler nur dringend abraten. Ich selbst programmiere auch sehr gerne in Assembler, einfach weil es mir Spaß macht und ich es mag mit der CPU auf Tuchfühlung zu gehen, aber für größere Programme oder komplexe Algorithmen bevorzuge ich dann doch lieber C++ und überlasse dem Compiler die Drecksarbeit. Man hat als Programmierer schon genug damit zu tun seine Ideen und Konzepte dem Computer begreiflich zu machen, da kann ich persönlich gut drauf verzichten auch noch ständig an die Wünsche und Vorlieben der CPU denken zu müssen. Ich denke mal man bekommt ein bestimmtes Problem mit weniger Zeitaufwand programmiert wenn man nicht Assembler benutzt. Assembler verleitet dazu sich in unnützem Kleinkram zu verlieren (wie z.B. Optimierungen, die der Compiler sicher deutlich besser erledigen kann).


Grüße
Erik
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 14. September 2010, 13:15
Wann ersvheint denn das erste Magazin?

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 14. September 2010, 16:00
Wann ersvheint denn das erste Magazin?

Programm Noob

ich hoffe doch mal am wochenende ist es fertig.. das konzept gefällt mir noch nicht so ganz. ich bin nicht ganz sicher ob ich so grundlagen wie Zahlensystemumwandlung reinnehmen soll da sie ja eigentlich schon erklärt werden... ich wollte es halt nur in ein extra wiki machen als einstieg was man wissen sollte für die OS Entwicklung..
was auf jedenfall reinkommt ist wie der pc arbeitet.. von Peripherie über den aufbau eines rechners, cpu und was passiert wenn der rechner gestartet wird..
das ist alles was ins erste magazin soll.. fällt jemanden noch was ein?
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: DerHartmut am 14. September 2010, 16:30
Ich persönlich bin ja ein wenig skeptisch, was dein Magazin angeht. Denn vom Aufbau her würde ich behaupten ist es fast wie das alte Lowlevel-Magazin, und das schlummert nun auch in den Urweiten des Wiki ganz versteckt dahin.

Außerdem ist ein Magazin erhebliche Arbeit. Diese Arbeit könntest du bei gleichem Effekt minimieren, in dem du einfach Beiträge im Wiki erstellst bzw. ausarbeitest. Du könntest ja auch eine Tutorialreihe im Wiki machen "Assembler für Anfänger" oder "C für (Programm_)Noobs)" (;-)), welche auch für Leihen verständlich ist. Solche zwei Anleitungen wären vor allem dann für die gut, die gerade ein bissschen C gelernt haben und schon ein Betriebssystem schreiben wollen.

Natürlich sollst du, wenn du unbedingt willst, dein Magazin schreiben, aber denk mal über meine Vorschläge nach :-)
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 14. September 2010, 16:56
Ich persönlich bin ja ein wenig skeptisch, was dein Magazin angeht. Denn vom Aufbau her würde ich behaupten ist es fast wie das alte Lowlevel-Magazin, und das schlummert nun auch in den Urweiten des Wiki ganz versteckt dahin.

Außerdem ist ein Magazin erhebliche Arbeit. Diese Arbeit könntest du bei gleichem Effekt minimieren, in dem du einfach Beiträge im Wiki erstellst bzw. ausarbeitest. Du könntest ja auch eine Tutorialreihe im Wiki machen "Assembler für Anfänger" oder "C für (Programm_)Noobs)" (;-)), welche auch für Leihen verständlich ist. Solche zwei Anleitungen wären vor allem dann für die gut, die gerade ein bissschen C gelernt haben und schon ein Betriebssystem schreiben wollen.

Natürlich sollst du, wenn du unbedingt willst, dein Magazin schreiben, aber denk mal über meine Vorschläge nach :-)

ich bin absolut der selben meinung... naja es sollte erst ein magazin im pdf format zum runterladen werden und im wiki kann man es immernoch als toturial umschreiben... allerdings ersteres thema Cumputergrundlangen als toturial wäre schwachsinn... wenn du weiter oben liest siehst du das ich mit deinen gedanken in etwa schon gespielt habe.. aber andere sind der meinung das toturials zu C++ bsw. ASM nicht rein gehören... ich müsste es also im bezug auf systemprgrammierung schreiben... aber ein solls ja für anfänger in den sprachen sein.. und darauf aufbauen soll das wiki über OS Entwicklung
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: DerHartmut am 14. September 2010, 17:03
Naja, ob du nun ein Tutorial über die Programmierung in C schreibst und ins Wiki stellst ist ja wohl nicht so schlimm (solange es bei diesem einen bleibt...). Das ist zumindest meine Meinung.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 14. September 2010, 17:09
Und für Laien verständliche C-Tutorials gibt es wie Sand am Meer (z.B. Wikibooks (http://de.wikibooks.org/wiki/C-Programmierung)), das muss man nicht unbedingt doppelt erstellen.

Interessant wäre höchstens, was es in der C-Programmierung zu beachten gibt, wenn die C-Library nicht existiert (ist ja in einem OS-Kernel so); das gehört eher nicht ein C-Tutorial, sondern ist dann wieder OS-Dev-Wissen.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 14. September 2010, 17:37
Und für Laien verständliche C-Tutorials gibt es wie Sand am Meer (z.B. Wikibooks (http://de.wikibooks.org/wiki/C-Programmierung)), das muss man nicht unbedingt doppelt erstellen.

Interessant wäre höchstens, was es in der C-Programmierung zu beachten gibt, wenn die C-Library nicht existiert (ist ja in einem OS-Kernel so); das gehört eher nicht ein C-Tutorial, sondern ist dann wieder OS-Dev-Wissen.

ja das wäre sinnvoll aber damit fülle ich keine ganzen seiten... xD ich würde auch ehr mit assembler anfangen weil man dort viel tiefer in die materie rein geht und später vieleicht sein C code besser versteht.. ok weißt was ... ich schreib einfach... schauen wir mal was bei raus kommt .. ich schicke es den probelesern dann wenn ich fertig bin
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Programm Noob am 14. September 2010, 17:53
Ich bin auch DesHartmut's Meinung. Bis auf das er mich immer wegen meines Namen's ärgert. ;)

Programm Noob
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: erik.vikinger am 14. September 2010, 18:17
Hallo,


ich möchte mich ebenfalls dafür aussprechen solche Tutorials eher ins Wiki zu integrieren.
C für Anfänger finde ich persönlich nicht so sehr sinnvoll, wer ernsthaft ein OS coden will sollte IMHO wenigstens etwas Erfahrung mitbringen, außerdem gibt es solche Lektüre wirklich schon zu hauf im iNetz. Assembler für Anfänger wäre da deutlich sinnvoller, vor allem wenn noch erklärt wird wie die CPU arbeitet, außerdem gehört gerade OS-Dev zu den wenigen verbliebenen Dingen wo ein Programmierer überhaupt noch Assembler-Kenntnisse braucht.
Ob diese Tutorials wirklich für Laien verständlich sein müssen ist auch eher fragwürdig, da müsste man erst mal klären was ein Laie ist (z.B. meine Oma wird auch mit der laienhaftesten Beschreibung nicht mehr zu einem Systemprogrammierer). Ich denke schon das ein gewisser Anspruch an den Leser da sein sollte, ansonsten fängt man wirklich noch an zu erklären was Bits und Bytes sind.


Interessant wäre höchstens, was es in der C-Programmierung zu beachten gibt, wenn die C-Library nicht existiert (ist ja in einem OS-Kernel so); das gehört eher nicht ein C-Tutorial, sondern ist dann wieder OS-Dev-Wissen.
ja das wäre sinnvoll aber damit fülle ich keine ganzen seiten
Doch, gerade mit solchen Dingen kann man viele Seiten füllen, wie z.B. ein printf oder der Zugriff auf Variable-Argumente richtig funktioniert (auch aus Sicht der CPU also wie der Compiler das umsetzt) wissen nur wenige.

ich schicke es den probelesern dann wenn ich fertig bin
Auch hier wäre der Wiki-Ansatz von Vorteil, so bekommst du schon Feedback noch bevor Du fertig bist und erst hinterher feststellst das Du viel Zeit für das Falsche geopfert hast.


Grüße
Erik


PS:
mich immer wegen meines Namen's ärgert
Das ist auch einfach zuuuu verlockend! Sorry aber mit diesem Namen wirst Du das bestimmt noch öfters erleben. ;)
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Svenska am 14. September 2010, 18:18
ja das wäre sinnvoll aber damit fülle ich keine ganzen seiten... xD
Gehts dir nur darum?

Ansonsten schließe ich mich Erik vollständig an.
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 14. September 2010, 18:25
ja das wäre sinnvoll aber damit fülle ich keine ganzen seiten... xD
Gehts dir nur darum?

Ansonsten schließe ich mich Erik vollständig an.

du fast das falsch auf  :-P.. nein es geht mir nicht darum seiten zu füllen...  :roll:
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: Chris Code am 14. September 2010, 20:06
Wichtig!:

Nach langem hin und her habe ich mich entgültig entschieden die magazine als pdf dateien und nicht als wikis zu veröffentlichen. dies hat folgende gründe..

wie die meisten und ich selber auch meine, passen umfangreichere Toturials über die programmierung mit C++ und ASM und Computergrundlagen nicht wirklich ins wiki von lowlevel.. einerseits vom Umfang und Format nicht (und ich will es sehr umfangreich machen) und andererseits von den Themen her. Allerdings bin ich noch am überlegen ob ich die Ausgaben über die Systemprogrammierung als Wiki veröffentliche, was ich denke ich auch tun werde... ich hoffe natürlich das mir trotz meiner entscheidung die probeleser erhalten bleiben...  :-D

ps: AggroStar1991 übernimmt den ASM Grundkurs teil den er auch als Wiki veröffentlichen kann/wird
Titel: Re:Einstieg in die Systemprogrammierung
Beitrag von: kevin am 14. September 2010, 20:56
Klingt vernünftig.

Und ich glaube, an Probelesern, die dein Werk verreißen, wird es dir nicht mangeln. Wenn wir hier im Forum eins haben, dann sind es Besserwisser. ;)