unterschied cmp cmpsw, cmpsd, cmpsb



  • ahoi!
    Was ist der Unterschied zwischen cmp und den anderen cmp nmemonics?
    Nur das ich bei cmp beide zu vergleichenden operanden angeben kann und das bei den anderen automatisch ESI und EDI benutzt werden?



  • Nein. cmps[b/w/d] ist ein "string-Befehl". Hier wird normalerweise [ds:esi] mit [es:edi] verglichen (Speicherzugriffe) und anschliessend esi und edi entweder um 1(/2/4) erhoeht oder verringert.
    Ich empfehle mal einen Blick in eine Befehlsreferenz zu werfen. In den FAQ sind einige auch fuer x86 verlinkt.



  • ok danke!
    Und noch was anderes, Macros sind ja fast das gleiche wie proceduren.
    Was sollte man lieber benutzen? Macros oder proceduren?



  • Macros und Prozeduren sind irgendwo doch recht unterschiedliche Konstrukte. Eine Prozedur ist nur ein Stueck code, zu dem hin- und wieder zurueckgesprungen wird, ein Macro wird an jeder verwendeten Stelle direkt in den Code eingefuegt und ist auch flexibler.

    Was nun vorteilhafter zu verwenden ist, haengt von der Intention, bzw. den Umstaende an.
    Willst du nur deine Quellcodes aufraeumen und strukturieren, nimm Macros.
    Hast du (groessere) Stuecke von Code, die an verschiedenen Stellen in deinem Programm immer mal wieder benutzt werden, bieten sich Prozeduren an (vermeidet Code-Duplikationen). Arbeitest du mit Pointern auf bestimmte Funktionalitaeten, brauchst du idR. auch eine Prozedur (vgl. zB. inline-Funktionen in C).
    Ist der Aufruf sehr zeitkritisch und du brauchst nicht unbedingt eine Prozedur -> Macro oder direkt hincoden.

    Hoffe die grobe Richtung wird klar.


Log in to reply