Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 00:12

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: NormalizeVector
BeitragVerfasst: Sa Feb 22, 2003 12:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Hab in der Geometry.pas folgende procedure "gefunden":
Code:
  1. procedure NormalizeVector(var v : TVector);
  2.  
  3. //   Result:=VectorLength(v);
  4.  
  5. //   ScaleVector(v, 1/Result);
  6.  
  7. asm
  8.  
  9.       FLD  DWORD PTR [EAX]
  10.  
  11.       FMUL ST, ST
  12.  
  13.       FLD  DWORD PTR [EAX+4]
  14.  
  15.       FMUL ST, ST
  16.  
  17.       FADD
  18.  
  19.       FLD  DWORD PTR [EAX+8]
  20.  
  21.       FMUL ST, ST
  22.  
  23.       FADD
  24.  
  25.       FLD  DWORD PTR [EAX+12]
  26.  
  27.       FMUL ST, ST
  28.  
  29.       FADD
  30.  
  31.       FSQRT
  32.  
  33.       FLD1
  34.  
  35.       FDIVR
  36.  
  37.       FLD  ST
  38.  
  39.       FMUL DWORD PTR [EAX]
  40.  
  41.       FSTP DWORD PTR [EAX]
  42.  
  43.       FLD  ST
  44.  
  45.       FMUL DWORD PTR [EAX+4]
  46.  
  47.       FSTP DWORD PTR [EAX+4]
  48.  
  49.       FLD ST
  50.  
  51.       FMUL DWORD PTR [EAX+8]
  52.  
  53.       FSTP DWORD PTR [EAX+8]
  54.  
  55.       FMUL DWORD PTR [EAX+12]
  56.  
  57.       FSTP DWORD PTR [EAX+12]
  58.  
  59. end;


Was macht die auf gut Deutsch??

Kennt einer gute (am besten deutsche) Tuts zum lernen von asm??

Thx

Fiji-Fighter

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 22, 2003 12:06 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
sie normalisiert einen vektor, bringt ihn also auf die länge 1 - schau mal bei der aktuellen glscene vorbei, da müsste eine geometry dabei sein, die zu großen teilen auch eine pascal variante anbietet, die leichter zu verstehen ist als asm - hier steht sie ja sogar im kommentar oben drüber


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 22, 2003 12:12 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Kann ich also das ganze auch mit
Code:
  1. result:=vectorlength(v);
  2.  
  3. scalevector(v, 1/result);

bewerkstelligen??

Was ist denn da das "Result"?
eine Extended Varable?

Ist der asm-Code schneller?

Danke schon mal... ;)

Fiji-Fighter

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 22, 2003 12:19 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
das result war wohl irgendwann eine Variable, die einfach nciht mehr deklariert ist. sollte aber nciht das prob sein, sie als single oder double(je nach bedarf und rückgabe, sowie parameter der anderen, verwendeten prozeduren/funktionen) neu zu definieren. vielleicht wäre in dem fall statt result laenge besser gewesen.
Vermutlich ist der asm code schneller.... sorry, aber ich bin grad zu faul zu erklären, warum ich dieser ansicht bin. aber auch der delphi code ließe sich noch ordentlich beschleunigen - wobei solche Performanceschübe auch stark abhängig vom verwendeten Prozessor und dessen Cachegrösse/Pipelines, etc. ist.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]