Thema: Delphi Delphi 64 Speicherfragen

Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#13

AW: Delphi 64 Speicherfragen

  Alt 19. Feb 2014, 20:14
Kann man die Bereichsprüfung nicht in den Projektoptionen deaktivieren
Die sind natürlich deaktiviert ({$R-}). Das ändert aber nichts daran, dass der vom Compiler erzeugte Assembler-Code nach jeder Operation eine Prüfung durchführt:

Delphi-Quellcode:
glbMatrix.pas.126: P(UInt64(FMMFPtr) + (Y * FCountX + X) * SizeOf(T))^ := Value;
0000000000759DD8 488B4D30 mov rcx,[rbp+$30]
0000000000759DDC 488B5530 mov rdx,[rbp+$30]
0000000000759DE0 8B4538 mov eax,[rbp+$38]
0000000000759DE3 F76208 mul dword ptr [rdx+$08]
0000000000759DE6 7305 jnb {glbMatrix}TMatrixMMF<System.Double>.SetValue + $2D
0000000000759DE8 E87319CBFF call @IntOver
0000000000759DED 034540 add eax,[rbp+$40]
0000000000759DF0 7305 jnb {glbMatrix}TMatrixMMF<System.Double>.SetValue + $37
0000000000759DF2 E86919CBFF call @IntOver
0000000000759DF7 8BC0 mov eax,eax
0000000000759DF9 486BC008 imul rax,rax,$08
0000000000759DFD 7105 jno {glbMatrix}TMatrixMMF<System.Double>.SetValue + $44
0000000000759DFF E85C19CBFF call @IntOver
0000000000759E04 488B4918 mov rcx,[rcx+$18]
0000000000759E08 4803C8 add rcx,rax
0000000000759E0B 7305 jnb {glbMatrix}TMatrixMMF<System.Double>.SetValue + $52
0000000000759E0D E84E19CBFF call @IntOver
0000000000759E12 488B4548 mov rax,[rbp+$48]
0000000000759E16 488901 mov [rcx],rax
Die Idee wäre halt gewesen die jnbs etc. und calls zu entfernen...

Gruß
Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat