![]() |
AW: 16 Byte Alignment? (SSE)
Das ALIGN hat dann allerdings nur auf direkte Variablen (lokal, global oder als Feld) eine wirkung, aber indirekt ist das auch schon bei Pointern (GetMem und Co.) gegeben, denn FastMM richtet jeden Speicher schon seit Jahren so aus und nutzt selber SSE-Moves, oder warn's MMX?.
|
AW: 16 Byte Alignment? (SSE)
@Himi: Klär mich auf, bei mir sind nur die globalen aligned, die lokalen NICHT(wahrscheinlich weil die funktionen erst gar nicht aligned werden v.v).
PS: kan mir mal jemdan den unterschied zwischen:
Delphi-Quellcode:
und
function name():TTest
asm movups [result], xmm0; end;
Delphi-Quellcode:
erklären? Bei letzterem würde ich nämlich nen Operandsize missmatch error bekommen o.O
function name():TTest
begin asm movups [result], xmm0; end; end; |
AW: 16 Byte Alignment? (SSE)
Ich denke, dass bei deiner ersten Version kein Stack-Rahmen angelegt wird, bei der zweiten, mit "begin ... end" umschlossenen sehr wohl.
|
AW: 16 Byte Alignment? (SSE)
Davon abgesehen funktioniert die 2. Methode ab XE2 nicht mehr.
|
AW: 16 Byte Alignment? (SSE)
@NeutralGeneral: Da gehts dan nur mit kompletten ASM funktionen oder gar nicht, richtig?(wegen inline asm)
|
AW: 16 Byte Alignment? (SSE)
Zitat:
|
AW: 16 Byte Alignment? (SSE)
Delphi alignmentiert :lol: standardmäßig nur soweit, wie es jeweils der größte Type verlangt.
Deine Double sind nur 8 Byte, also werden sie auch an 8 Byte-Grenzen ausgerichtet. Bytes werden an Byte-Grenzen ausgerichtet, wie z.B. ein
Delphi-Quellcode:
oder ein Record mit 8 Byte, da der größe Eineltyp ja ein Byte ist.
array[0..7] of Byte
|
AW: 16 Byte Alignment? (SSE)
Zitat:
Zitat:
> die ganze Funktion in Assembler oder garnichts (die haben es sich halt leicht gemacht und diesen MixedMode garnicht erst implementiert) |
AW: 16 Byte Alignment? (SSE)
@Himitsu: Hab mir jetzt unter D7 eine art MemoryManager geschrieben.
Die klasse implimentiert unter anderem die methoden MemGet/MemFree. MemGet hat neben der angefragten größe noch einen parameter Alignment. Mein Manager spuckt dann auch nur ne adresse aus, die an dem Parameter Alignment ausgerichtet ist :D |
AW: 16 Byte Alignment? (SSE)
Du könntest natürlich auch einfach FastMM einbinden. (der ist eh besser, als der alte DelphiMM)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 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 by Thomas Breitkreuz