Post by Jens KallupHallo Bernhard,
danke füe Deine Rückmeldung.
Vorf einigen Stunden habe ich gelesen können,
das fadd und dergleichen 387 krimskrams "deprecated"
sei und ich lieber SSE nutzen solle.
das ist nur bedingt richtig, bei 64 bit programmen
werden die sse register standardmäßig verwendet,
soweit richtig, beim beispiel unten aber nicht.
Post by Jens KallupNun, ist für mich ein wenig Umstellungssache, aber
movups xmm0, [_LC14]
movups xmm1, [_LC15]
movups xmm2, [_LC15]
addps xmm1, xmm2
mulps xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movq [esp], xmm0
call [__imp__testDLL2] ; call dll func
add esp, 16 ; reset tos
_LC14: dd 5.000001
_LC15: dd 3.000002
_LC16: dd 4.000003
obiges ist gelinde gesagt unsinn da du 4 single values
bearbeitest und dann nur einen in double umwandelst
und übergibst, mit einem single wert wäre es:
movss xmm0, [_LC15]
addss xmm0, xmm0
mulss xmm0, [_LC14]
cvtss2sd xmm0, xmm0
sub esp, 8
movq [esp], xmm0
call [__imp__testDLL2] ; call dll func
add esp, 16 ; reset tos
und das sub esp, 8 ließe sich nicht verkürzen da hier
8 bytes auf dem stack reserviert werden auf welche
das ergebnis gespeichert wird und die aufgerufene
prozedur dann zugreift.