Assembler i Delphi dll

Tags:    delphi

Jeg har lavet en plug-in i en dll, hvor der anvendes assembler. Desværre har jeg konstateret at applicationen crasher når jeg tilgår memory, der er i en klasse. Her et simpelt eksempel (skippet for alt ligegyldigt):

procedure TForm1.Button1Click(Sender: TObject);
var
x : array[0..3] of single;
begin
asm
MOVAPS XMM3, x
end;
end;

Er det en applikation (exe) er der intet problem - kun i en dll. Hvis "x" er en variabel defineret uden for klasse virker det også i en dll. Dette er dog ingen løsning, da variable der ikke er i klasse er shared mellem flere instanser af den samme plug-in.

Nogle ideer til en måde at løse dette på?



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
jeg er egentlig ikke helt klar over det. Du kan kun flytte aligned data mellem de interne sse registre. Jeg er ikke helt klar over hvorfor et array af singles ikke er alignet



Du skal benytte MOVUPS for at flytte til et xmm register. MOVAPS kan kun bruges til at flytte data der er pakket, og det burde fejle i din exefil også



Jamen, det var jo det - virker! :D Hvornår er data egentligt aligned og unaligned?

Takker!
Torben



t