register



  • die einzelnen register haben zwar ihre namen wofür sie mal ursprünglich gedacht waren aber generell ist das doch egal, in welchem registeer ich gerade was speichere oder?



  • Grundsätzlich ja, aber es gibt Befehle die die Operanden in bestimmten Registern erwarten: z.B. [i]mul und [i]div, alle String Befehle (scas,cmps...), push/pop, call, ...



  • Auf welchem System muss denn bei IMUL/IDIV ein bestimmtes Register gewählt werden? Ich hab grad einen Compiler hier an der Uni abgegeben an dem ich das wunderbar ignoriere...ist das nur bei speziellen Prozessoren so nötig?

    MfG SideWinder



  • jop, das stimmt nicht, imul und idiv lassen einem die freie Wahl



  • SideWinder schrieb:

    Ich hab grad einen Compiler hier an der Uni abgegeben an dem ich das wunderbar ignoriere...ist das nur bei speziellen Prozessoren so nötig?

    Jetzt hab ich mich mal wieder hinreißen lassen: idiv erwartet den Dividend in eax:edx. Solltest also noch bei deinem Compiler nacharbeiten ... scheint aber zu spät zu sein 🙂



  • Indeed. Zumindest bei idiv sind die Register festgelegt.
    Kann sein, dass ich mich irre, aber AFAIR gab es auch von imul Formen, wo das Ergebnis immer in edx:eax geparkt haben.



  • clown-ohne-nase schrieb:

    die einzelnen register haben zwar ihre namen wofür sie mal ursprünglich gedacht waren aber generell ist das doch egal, in welchem registeer ich gerade was speichere oder?

    Nein, das ist nicht egal. Das weiß man aber auch automatisch, wenn man bestimmte Grundlagenkenntnisse in Asm hat, und schon ein paar komplexere Programme in Asm geschrieben und getestet hat.

    @SideWinder: besorg die lieber die beiden Nachschlagebücher(asm) von Backer und Rhode und in der Unibücherei steht bestimmt auch noch die ein oder andere Ausgabe vom Podschun herum.


Log in to reply