Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#25

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 20:12
Ich meine gehört zu haben , dass im Optimierungsfalle Schleifen ggf. in die andere Richtung abgearbeitet werden, was zu 'Seiteneffekten' führen kann.
Ja, die zählen manchmal rückwärts auf 0 runter, aber beim Zugriff wird das umgerechnet und schon stimmt es wieder.

Egal, ob aus dem
Delphi-Quellcode:
for i := 1 to 9 do
  Write(i);
der Compiler das macht.
Delphi-Quellcode:
for i := 8 downto 0 do
  Write(9 - i);
Am Ende kommt das Gleiche bei raus.

Aber kommt wer auf die saudumme Idee nach der Schleife auf i zugreifen zu wollen, dann ist er selbst Schuld.



@jaenicke:
Mit 64 Bit stirbt der Inline-Assembler eh aus.
Und wenn i mal nicht in ebx liegt, dann hat dein Code eh ein Problem.
Wenn du im Assembler auf "i" zugreifst, dann weiß der Compiler in welchem Register/Stack die Variable liegt und dass hier nicht optimiert werden kann/soll.

Auch mit Pointern kann man da Mist bauen.
Delphi-Quellcode:
for i := 0 to 9 { step 2 } do begin
  ShowMessage(i.ToString); // 0 2 4 6 8
  Inc(PInteger(@i)^);
end;
$2B or not $2B

Geändert von himitsu ( 4. Jan 2023 um 20:20 Uhr)
  Mit Zitat antworten Zitat