AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

For-Schleife von 0 bis 7 fängt bei 8 an

Ein Thema von Flogo · begonnen am 14. Dez 2004 · letzter Beitrag vom 17. Dez 2004
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 05:58
Zitat:
Ich glaube, du hast nicht verstanden, was dir versucht wird zu erklären. In ASM baut man schleifen so auf, dass man die Zählvariable in ein Register packt, dieses immer dekrementiert und auf null prüft. Ein Register auf null prüfen ist einfacher und damit performanter als zwei von null verschiedenen Werte mit einander zu vergleichen.
Um das noch genauer auszudrücken:

Bei jeder mathematischen Operation mit Ganzzahlen auf einer Intel CPU wird nicht nur das Resultat berechnet sondern auch Flags gesetzt die bestimmte Besonderheiten des Resultates wiederspiegeln. Wird also ein Register dekrementiert dann wird in den Flags das ZERO Flag automatisch durch diesen DEC Befehl gesetzt wenn das Resultat NULL wurde. D.h. also das solche Operationen implizit bestimmte Abfragen durchführen, und das sofort in diesem Befehl. Danach gibt es bedingte Sprungbefehle die IMMER diese Flags als Grundlage nehmen um zu detektieren ob sie verzweigen sollen. D.h. beim Dekrement eines Register's werden minimal 2 CPU Befehle nötig. Inkrementiert man aber bis zu einer Zahlengrenze so muß die CPU nach dem Inkrement das Resultat = Zählvariable mit dieser Zahl explizit vergleichen und dann erst springen. Das benötigt also 3 Befehle.

Die Optimierung des Compilers benötigt also weniger Befehle um das gleiche Ziel zu erreichen. Die dazu benutzen Befehle sind NICHT schneller als die Befehle des unoptimierten Codes, das ist ein Irrtum.

Willst du aus Debugtechnischen Gründen die Optimierung des Compilers unterdrücken dann schalte die Optimierung einfach aus beim Compilieren.

Gruß Hagen
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz