Dieser Registerinhalt kann nach "einer Weile" Code hinter der Schleife einfach einen anderen Wert haben.
Und nein, das stimmt einfach nicht. Sorry, aber das ist falsch.
Die Zählervariable ist eine ganz normale Variable, die vor oder auch danach einen festen Wert hat/haben kann.
Deshalb kannst du ja auch 2
for
-Schleifen hintereinander packen ohne dass es zu Problemen kommt.
Delphi-Quellcode:
program CountTo100;
var
I: Integer;
begin
for I := 1 to 50 do WriteLn(I);
WriteLn('Halbzeit');
for I := Succ(I) to 100 do WriteLn(I);
WriteLn('Fertig');
end.
Das funktioniert so einwandfrei, und da wird nichts "umgepackt". Der Compiler managet deine Variablen schon alle, und das ohne dir da irgendwas zu überschreiben. Und schon überhaupt nicht überschreibt der dir die Ergebnisvariable irgendwo im Code, ohne, dass du das willst. Wenn es mehr Variablen/Parameter als Register gibt, dann werden Sachen auf dem Stack abgelegt.