Autor Thema: Neuling mit nervigen Fragen :s  (Gelesen 10082 mal)

tenshi

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 01. September 2013, 20:43 »
Hallo liebe lowlevel Community,

erst mal will ich mich hier kurz vorstellen, ich bin Luca 21 Jahre alt und mache gerade meinen TAI mit anschließender FOS damit ich nachher Studieren kann. Ich interessiere mich seit meinem 18 Lebensjahr intensiv für Computer und die ganze Technik dahinter. Leider hab ich das erst so spät für mich entdeckt, aber nun ja muss ich halt reinhauen haha :D.
Vor kurzem habe ich dann entdeckt das ich ein riesen Interesse an der lowlevel Programmierung habe. Ich habe zwar schon ein wenig Programmiererfahrung allerdings nicht in C und/oder Assembler.
Nun will ich diese gerne lernen. Allerdings kenne ich niemanden der C bzw Assembler kann und mir gute Lernmaterialien empfehlen kann. Arbeiten tue ich auf einer Linux Distribution. Also gerne auch Linux spezifische Sachen :)

Für C habe ich das hier gefunden, sein "Buch" zu Python zählt zu einem der Besten.
learn c the hard way
Finde seine Art wie er schreibt recht gut, auch das Prinzip gefällt mir, allerdings weiß ich natürlich nicht wie gut / schlecht das ganze ist.

Und zum Thema Assembler hab ich ein PDF Dokument mit dem Namen "The Art of the Assembly Language", welches recht hoch gelobt wurde auf der Seite.

Erst mal will ich mit mit der x86 Architektur beschäftigen, einfach auf Grund der Tatsache das ich diese halt habe :P.
Da hab ich auch gleich noch eine Frage:
Gibt es Unterschiede zwischen x86 und x86_64 was z.B. die Assembler Programmierung angeht?

So das wars erst mal von dem nervigen Neuling :D

Lieben Gruß
Desmater


ps: Ich hab zwar die Suchfunktion bemüht, allerdings hab ich leider nicht das gefunden was ich gesucht habe :(

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 02. September 2013, 01:08 »
Hallo,

mache gerade meinen TAI mit anschließender FOS damit ich nachher Studieren kann
TAI? FOS? :-)

Ich habe zwar schon ein wenig Programmiererfahrung allerdings nicht in C und/oder Assembler. Nun will ich diese gerne lernen.
Wo liegen denn deine Programmiererfahrungen bisher?

Über C gibt es Unmengen an Büchern. Beispielsweise "C von A bis Z" gibt es kostenlos hier im Internet. Außerdem gilt noch "The C Programming Language" von Kernighan und Ritchie als Standardwerk, das sollte auch in jeder besseren Bibliothek vorhanden sein. Grundsätzlich steht aber in allen Büchern das Gleiche drin (sollte zumindest) und wenn du eine Programmiersprache begriffen hast, lernen sich die anderen recht einfach. Wenn du ein Buch gut findest, dann nimm es einfach.

Unter Linux ist der gcc der Standard-Compiler und wird von uns fast ausschließlich eingesetzt.

Und zum Thema Assembler hab ich ein PDF Dokument mit dem Namen "The Art of the Assembly Language", welches recht hoch gelobt wurde auf der Seite.
Beim spontanen Reinschauen fand ich es jetzt nicht besonders prickelnd. Bis auf ganz bestimmte Ausnahmen(*) braucht man Assembler heutzutage nicht mehr. Compiler generieren inzwischen fast überall Code, der besser ist als handgeschriebener Assemblercode.

(*) Ausnahmen: Entweder, es gibt keinen gescheiten Compiler für deine CPU oder du möchtest Funktionen der CPU benutzen, die entweder der Compiler nicht kennt oder die für Anwendungsprogramme nicht relevant sind. Praktisch beschränkt sich der Assembler-Anteil dann aber auf wenige Zeilen bis wenige Funktionen.

Gibt es Unterschiede zwischen x86 und x86_64 was z.B. die Assembler Programmierung angeht?
Ja. Ein x86_64-Prozessor hat nichts mit einem x86-Prozessor zu tun (außer, dass man ihn zufällig in einem 32-Bit-Kompatiblitätsmodus betreiben kann und er dann so tut, als wäre er ein x86-Prozessor).

Ein Buch über x86-Assembler ist für x86_64-Prozessoren nur unwesentlich nützlicher als ein Buch über MIPS-Prozessoren. Viel wichtiger ist die Umgebung, in der dieser Prozessor lebt (da fallen dann Dinge wie Paging oder Segmentierung mit rein) - das steht normalerweise im Datenblatt des Prozessors.

Ansonsten gibt es Unmengen von Informationen (hauptsächlich x86/x86_64 auf der PC-Architektur) im hauseigenen Wiki.

Willkommen!

Gruß,
Svenska

tenshi

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 02. September 2013, 07:13 »
Ach ich vergesse immer das es tai nicht überall gibt :x.
Tai steht für technische Assistenz für Informatik. Ist eigentlich das gleiche wie ne Ausbildung zum fachinformatiker. Und fos ist die fachoberschulreife damit kann ich in Hamburg dann fachbezogen an die Uni gehen  :-D

Also habe Erfahrungen in python (einige kleine Sachen und web kram). In der Schule lerne ich c# und habe vor längerer zeit auch mal ein wenig mit c++ gemacht.
Allerdings bin ich mir bewusst das es noch dauert bis ich damit anfangen kann ein os zu schreiben haha.

Wie sieht es mit dem neuen c11 Standard aus? Gibt es da wichtige Sachen die man auf jeden Fall kennen sollte?

Gut das mit der Hardware hab ich auch noch einiges zu lernen. Habe zwar gestern schon mal die ein oder andere Seite im wiki gelesen aber da wartet ja noch einiges :)

Lg
Tenshi :)

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 02. September 2013, 09:16 »
Gibt es Unterschiede zwischen x86 und x86_64 was z.B. die Assembler Programmierung angeht?
Ja. Ein x86_64-Prozessor hat nichts mit einem x86-Prozessor zu tun (außer, dass man ihn zufällig in einem 32-Bit-Kompatiblitätsmodus betreiben kann und er dann so tut, als wäre er ein x86-Prozessor).
Öhm, das halte ich für eine gewagte Aussage. Die Konzepte sind genau die gleichen, der Befehlssatz ist der gleiche, insofern ist rein von der Assemblerprogrammierung her der Sprung auf x86_64 nicht groß, wenn man i386 kann. Dass man natürlich auf der Systemebene andere Konzepte und Datenstrukturen hat, ist schon klar, aber das hat erstmal nichts mit Assembler an sich zu tun (sondern wird ja meistens auch in C implementiert).

Wie sieht es mit dem neuen c11 Standard aus? Gibt es da wichtige Sachen die man auf jeden Fall kennen sollte?
Mach dir darüber erstmal keine Gedanken. Für einen Anfänger spielen die Änderungen (sind ja eigentlich nur Erweiterungen) keine große Rolle.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

tenshi

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 02. September 2013, 21:54 »
Ok, so weit so gut :) .

Ist das Buch "C von A bis Z" wirklich empfehlen? Denn das Buch "C++ von A bis Z" vom gleichen Author wird ziemlich stark Kritisiert. Gibt es sonst noch empfehlenswerte Bücher / Tutorials?

Und bis jetzt fehlt mir noch was für den Assembler Bereich :)

LG

Tenshi

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 02. September 2013, 22:20 »
Hallo,

Die Konzepte sind genau die gleichen, der Befehlssatz ist der gleiche, insofern ist rein von der Assemblerprogrammierung her der Sprung auf x86_64 nicht groß, wenn man i386 kann.
Vielleicht hätte ich das nicht so stark formulieren sollen. Aber auch die Assemblersprachen verschiedener RISC-Architekturen unterscheiden sich voneinander - aber wenn man eine kann, ist der Sprung zu einer anderen ebenfalls nicht gross - aber vorhanden.

Ist das Buch "C von A bis Z" wirklich empfehlen?
Keine Ahnung. Dafür kostet es nix. Fang einfach an - wenn es dir nicht gefällt, kannst du dir auch was anderes besorgen. Ansonsten kann ich dir nur den Rat geben, den mir meine Mathelehrerin mal gegeben hat: Geh in die Bibliothek und besorge dir das abgegriffenste Buch zum Thema, was du finden kannst. Wenn das jeder lesen will, dann wird das schon Gründe haben.

Und bis jetzt fehlt mir noch was für den Assembler Bereich :)
Geh' in deine lokale Bibliothek und stelle erstaunt fest, dass du sowas hauptsächlich nur für alte Architekturen findest. Damals hat man Algorithmen noch damit umgesetzt. Wenn du dir das antun möchtest... ansonsten empfehle ich dir, Assembler aufzuschieben, bis du C hinreichend gut kannst. Das Wenige, was du in Assembler jemals brauchst, holst du dir aus dem Datenblatt, wenn du es brauchst.

Wenn du wirklich unbedingt Assembler lernen möchtest, dann schaue dich lieber bei kleinen Mikrocontrollern oder alten Architekturen um. Die sind noch hinreichend einfach verständlich und du wirst nicht so schnell erschlagen.

Gruss,
Svenska

 

Einloggen