I've got a problem with my program. I can compile and link it, but all the code below is seen in debugger as unknown.


cvtdq2ps xmm0, OWORD PTR Rchannel
cvtdq2ps xmm1, OWORD PTR Gchannel
cvtdq2ps xmm2, OWORD PTR Bchannel

.if bpp==32
cvtdq2ps xmm3, OWORD PTR Achannel
.endif


The beginning of the source file :

        .686
.XMM

.model flat, stdcall
option casemap :none  ; case sensitive


My CPU has support for MMX, SSE, SSE2 and I'm using masm32, with ml.exe v6.15, whitch has support for see2. I don't know what to do :sad:, so please help me!
Posted on 2006-02-14 09:44:41 by Lenny
Some debuggers don't recognize SSE2 and SSE3 instructions, but they execue them correctly, so it's not a problem if you know their lengths and pay attention to EIP while debugging.
Posted on 2006-02-14 12:29:34 by ti_mo_n
Thx ti_mo_n  :D

Now I have got other problem.
		
(...)
LOCAL DFactrs[4]:REAL4
(...)
;xmm0 = 24.00000, 24.00000, 24.00000, 21.00000
;DFactrs = 0.0, 0.0, 0.0, 1.0
mulps xmm0, OWORD PTR DFactrs          ;<<--


Programs fails at this line and there is a message in the debugger window:

	
Access violation when reading - (...)


What am I doing wrong?
Posted on 2006-02-16 09:34:49 by Lenny
mulps is a scalar multiplication, so it will perform only 1 multiplication, but that's not the case.

Please post the disassembled code (i like it more :P ). Make sure that the local data is 4-byte aligned.
Posted on 2006-02-16 15:06:33 by ti_mo_n
mulps - multiply packed single-precision floating point values, so there would be 4 multiplication. But you remind me, that mulps requaires data in 16-byte boundary. Now it works  :lol:. THX one more time ti_mo_n!

Posted on 2006-02-17 02:16:16 by Lenny
Oh yes - my mistake :P 'ps' stands for "packed, single-precision", while 'ss' stands for "scalar, single-precision". And yes - packed operations must be 16-byte aligned, excluding the 'movups'.

I was happy to be of any help :P LOL :P
Posted on 2006-02-17 13:58:53 by ti_mo_n