Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.09.10 22:51 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Delphi (2010) durchläuft sie auch richtig rum.
Hast du im Assemblercode geschaut?

Dass es im Debugger falsch herum angezeigt wurde, war früher ja ein Fehler, weil der schlicht nichts von der Optimierung wusste. Wenn du also nur im Debugger geschaut hast, kann es auch sein, dass der korrigiert wurde und den richtigen Wert aus dem optimierten berechnet (wie ich es eigentlich von Anfang erwartet hätte).
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 03.09.10 07:23 
Ich muss sagen, dass ich nicht in der ASM-Welt zuhause bin.
Folgender Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  var i: integer;
    p: pointer;

begin
  begin
    p := @i;
    for i := 0 to 99 do begin
      Writeln(IntToStr(Integer(p^)));
    end;
  end;
end.


ASM

Wenn ich das richtig sehe, wird also hochgezählt.
Einloggen, um Attachments anzusehen!
_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
juelin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

Win XP, Linux
D7 K3
BeitragVerfasst: Fr 03.09.10 07:32 
Also ich habe die fOR Schleife im Debug-Modus im Einzelschritt durch laufen
und jeweils die Variable l(L) abgefragt.

For l:=1 to 99 do
begin
nt[l]:=x;
end;

Da lief es rückwärts (99, 98, 97 ..... 1);

Aber das Programm läuft jetzt richtig.
Warum auch immer.

Problem gelößt.

Gruss
Jürgen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 03.09.10 08:11 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich das richtig sehe, wird also hochgezählt.
Richtig, esi wird hochgezählt, mit cmp verglichen und je nach dem Ergebnis mit jnz zurück zum Anfang gesprungen, wenn der Wert nicht erreicht ist. Allerdings greifst du auch auf die Variable zu und ich traue dem Compiler durchaus die "Intelligenz" zu dies hier zu erkennen.

user profile iconjuelin hat folgendes geschrieben Zum zitierten Posting springen:
Aber das Programm läuft jetzt richtig.
Das tut es immer, du siehst diesen Wert ja nur im Debugger falsch. Wenn du die Optimierung ausschaltest, stimmt es auch da.