Register in Assembler

Hallo,

wenn ich die Funktion

movl %ebx, %ecx
addl %edx, %ecx

anwende, ist dann das %ebx -Register leer?

Danke im Voraus.
LG Diana

Was heißt leer? leer= 0?

Assembler ist bei mir schon einige Jahre her. mit mov wird der Inhalt von ecx nach ebx kopiert, eine anschließende Addition anderer Register ändert nichts am „Inhalt“ von ebx

PS: Es bleibt immer die Möglichkeit sich die Registerinhalte anzeigen zu lassen und nach zu schauen.

Bei einem MIPS Assembler wird bei MOV ist das Ursprungsregister nachher 0. Ich denke mal ähnlches gilt für die meisten anderen auch. Was für ein Assembler verwendest du denn?

Meine mich zu erinnern, dass das erste Argument das Ziel ist

[quote=Diana]

movl %ebx, %ecx
addl %edx, %ecx

anwende, ist dann das %ebx -Register leer?[/quote]
wieso sollte ebx leer sein? Du kopierst da ja was von ecx hin. Bei der Addition ignorierst Du das register komplett. MOV ist unglücklich gewählt, hätte eher CPY (oder so) sein müssen.

nicht wirklich, kann sein das das beim MIPS so ist (kenne ich nicht). Dafür müsste aber dann irgend ein Befehl existieren um Werte zu kopieren.

Was für ein Assembler verwendest du denn?

vermutlich masm - ist kostenlos und ASM programmiert man heute nur noch in Fakultäten.

nun gut

nicht nur, aber von anderer Seite kommen keine Grundlagenfragen mehr

Grade noch einmal getestet/debugged um sicher zu gehen. In meinem MIPSim bewirkt MOV wirklich ein „Move“, der Wert steht im neuen Register und das alte ist danach 0.

  • ?? -

wie werden dann Werte dupliziert bzw. nicht aus der Quelle gelöscht?

Merkwürdig.

Wenn man dort den move-Befehl nachschlägt, dann steht dort

move Rd;Rs    move register    [tex]R_d \leftarrow R_s[/tex]

Wenn [tex]R_s[/tex] danach 0 sein sollte, müsste dann nicht stattdessen [tex]R_d \leftarrow R_s,\ R_s\leftarrow 0[/tex] da stehen?

Auch wenn ich ernsthaft bezweifle, dass den TO das hier noch interessiert - MOV war auf x86 Assembler jedenfalls frueher (und ich kann mir beim besten Willen nicht vorstellen, dass das geaendert wurde) ein Copy. Ein richtiger Move Befehl macht in meinen mueden Augen auch keinen richtigen Sinn…

Was ich jedenfalls noch anmerken wollte: Das ebx gesetzt wird, wenn ein Ueberlauf stattfindet ist auszuschliessen oder? Aber irgendwas wurde im Ueberlaufsfall gesetzt… das ist alles so unendlich lange her :smiley:

Das Overflow-Bit wird gesetzt :wink: Das befindet sich aber irgendwo in einem Statusregister und nicht im allgemeinen Register.