Seite 3 von 8 ErsteErste 12345 ... LetzteLetzte
Zeige Ergebnis 21 bis 30 von 76

Will C++ lernen

Erstellt von Angel, 14.01.2004, 20:06 Uhr · 75 Antworten · 13.050 Aufrufe

  1. #21
    Benutzerbild von oneSTone o2o

    Registriert seit
    12.12.2002
    Beiträge
    4.320
    Bei Assembler muss man sich viel zu sehr mit dem Prozessor selbst befassen. Wenn sich am Prozessor was ändert, muss man das berücksichtigen. Diese Arbeit sollte man besser dem Compiler überlassen.

  2.  
    Anzeige
  3. #22
    Benutzerbild von Kreatief

    Registriert seit
    20.01.2003
    Beiträge
    231
    Also Probleme mit Prozessoren habe ich beim Programmieren und Ausführen noch nicht festgestellt. Das einzigige was man beachten muss ist, dass es Befehle gibt, die nur für bestimmte Systeme gibt (nt-basieren, oder 9x).

    @Usul:

    Da ich Masm benutze, habe ich die gleichen Möglichkeiten noch einfacher While- oder andere Schleifen zu erstellen. Funktioniert wie in C++ o.ä.
    (Wenn du darauf hinausziehlst)

    Naja, wie gesagt, ich liebe diese Programmiersprache. Aber es bleibt sicherlich jedem selbst überlassen, mit was er sich befasst.


    DKT

  4. #23
    Benutzerbild von oneSTone o2o

    Registriert seit
    12.12.2002
    Beiträge
    4.320
    Der eine Prozessor kann MMX, der nächste SSE, wieder ein anderer 3DNow!, der nächste kann das zwar alles, aber unterschiedlich gut/schlecht, ...

    Willst du das beim Zufußkodieren alles selbst berücksichtigen?

  5. #24
    Benutzerbild von Kreatief

    Registriert seit
    20.01.2003
    Beiträge
    231
    As I said,

    ich benutze ja quasi einen Compiler. Ich arbeite mit Masm, und als Editor RadAsm.

    Der compiled und linked für mich. Ich kann ebenso wie in c++ Schleifen bauen etc. Nur arbeite ich hier halt in Assembler.

    z.B.:

    In RadAsm:

    .while eax < 4
    add ebx, ecx
    .endw

    Übersetzt:

    400000: cmp eax, 4
    400010: jg 400040
    400020: add ebx, ecx
    400030: jmp 400000
    400040: ...


    Ist doch wunderschön oder?

    Und der Prozessorenkram wird vom Compiler übernommen.

    DKT

  6. #25
    Benutzerbild von oneSTone o2o

    Registriert seit
    12.12.2002
    Beiträge
    4.320
    add ebx, ecx
    Das ist aber bereits ein direkter Maschinenbefehl, der auf der Alu (Integer) rechnet. Wenn du in einen andere Datenformat (z.B.Floatingpoint) rechnen willst, kannst du den add Befehl aber nicht benutzen. Dann musst du einen Befehl für die FPU oder SSE2 oder MMX benutzen, und da fängts dann an. In c mache ich einfach aus int ebx ein long ebx oder ein float ebx oder matrix ebx und der Befehl ebx:=ebx+ecx; rechnet mir das aus, und nutzt die dafür am besten geeignete Recheneinheit, die der Prozessor mir anbietet. Wenn du in Assembler arbeitest, musst du wirklich alles zu Fuß machen, Arbeit die dir ein Hochsprachencompiler abnimmt, und du bist außerdem flexibler was die Ziel-Plattform betrifft, ein C-Programm lässt sich viel einfacher auf eine andere Kiste (z.B. Mac) portieren, als X86-Assembler.

    in Assembler hast du nur eine beschränkte Anzahl von Registern, die du überhaupt für deine Rechenoperationen nutzen kannst, wenn du mehr brauchst, musst du erstmal den Status des Registers sichern, neuen Wert reinschreiben, rechnen, Ergebnis sichern, und wenn du dann mit dem vorherigen Datum weiter machen willst, musst du dir das erst aus dem Speicher in ein (freies) Register laden und kannst dann weitermachen. Neee, sowas überlasse ich einem Compiler.

    MASM als Compiler zu bezeichnen, naja... Makro-Assembler triffts eher.

  7. #26
    Benutzerbild von Kreatief

    Registriert seit
    20.01.2003
    Beiträge
    231
    Hmm... recht haben magst du...


    Aber, Variablen kann ich auch benutzen. Ich kann sogar deklarieren wie lang die sind. und wenn man doch mal die register sichern muss:

    pusha

    das ist alles. Das entspricht genau einem Byte (60h).

    Naja, wie gesagt. Meiner Meinung nach ist das die sicherste Sprache, und nicht besonders schwer. Aber mit dieser Meinung werde ich wohl relativ alleine dastehen.

    Aber dennoch, ich erinnere nur an den tollen Befehl des Compilers von Delphi:

    add ebx, 0


    DKT

  8. #27
    Benutzerbild von oneSTone o2o

    Registriert seit
    12.12.2002
    Beiträge
    4.320
    Delphi ist ja auch eine Datenbankprogrammiersprache basierend auf Pasca. Einem C-Compiler wird sowas nicht passieren.

    Und der Push und Popbefehl sichert alle Refister und stellt sie wieder her. Sichern ist nicht das große Problem, aber was ist, wenn du nur einen Wert wieder herstellen willst, und alle anderen Register so lassen willst, wie sie sind?

  9. #28
    Benutzerbild von Kreatief

    Registriert seit
    20.01.2003
    Beiträge
    231
    Dann nimmst du

    push ebx
    ...
    pop ebx


    DKT

  10. #29
    Benutzerbild von oneSTone o2o

    Registriert seit
    12.12.2002
    Beiträge
    4.320
    Und schon ists nicht mehr ein Byte.

  11. #30
    Benutzerbild von Kreatief

    Registriert seit
    20.01.2003
    Beiträge
    231


    Vorher warens auch zwei bytes: pusha - popa
    Nun ist es push ebx - pop ebx.

    Wobei jeder Befehl 1 byte ist. Somit hast du zum Sichern UND Wiederherstellen ganze 2 Bytes verwendet...

    Nur zur Info: push ebx (oder auch eax, oder sonstwas) ist nur 1 (!!!) Byte...


    DKT

Seite 3 von 8 ErsteErste 12345 ... LetzteLetzte

Ähnliche Themen

  1. Linux lernen
    Von Windassel im Forum Linux Frontends
    Antworten: 2
    Letzter Beitrag: 22.12.2011, 18:55
  2. Kann die Logitech Harmony 885 alles lernen ?
    Von visionsurfer im Forum Fernbedienung
    Antworten: 13
    Letzter Beitrag: 22.08.2006, 13:00