.


:




:

































 

 

 

 





, .

paddb | paddw | paddd , , , . , -. -, 64- . . .

paddsb | paddsw , . , -. -, 64- . .

paddusb | paddusw , . , -. -, 64- .

psubb | psubw | psubd , , , . , -. -, 64- . , , sub sbb . , , .

psubusb | psubusw , . , -. -, 64- . , 00h (0000h), ( 00h (0000h)).

 

MMX- 1024- . , t1 t2 1024- , nmax=1023. , :

asm

mov ecx,nmax+1

xor esi,esi

@l:

mov al, byte ptr t1+[esi];

add al, byte ptr t2+[esi];

mov byte ptr t3+[esi],al

inc esi

loop @l

end;

MMX- t1,t2 t3 :

c:=(nmax div 8)+1;

asm

mov ecx,c

xor esi,esi

@l:

movq mm0, qword ptr t1+[esi];

paddb mm0, qword ptr t2+[esi];

movq qword ptr t3+[esi],mm0

add esi,8

loop @l

emms; .

; Delphi C++ Builder

end;

 

- 16- , . , . MMX- :

4 ;

( ) pmulhw pmullw. , , . punpckhwd punpcklwd.

pmulhw , . , -. -, 64- . 32 , 16 . 16 , pmullw.

pmullw , . , -. -, 64- . 32 , 16 . 16 , pmulhw.

.

.data; mem dw 5h df 7ffb22223382hmem1 dw 8008h df 7ffe0f7d0ffahmem2 dw 0 df 0mem3 dw 0 df 0.code......... movq rmmx0, mem;rmmx0=7ffb 2222 3382 0005;mem1 =7ffe 0f7d 0ffa 8008; pmullw rmmx0, mem1;rmmx0=800a ab9a eaf4 8028 movq rmmx1, mem;rmmx1=7ffb 2222 3382 0005;mem1 =7ffe 0f7d 0ffa 8003; pmulhw rmmx1, mem1;rmmx1=3ffc 0210 0336 fffd; rmmx0 movq rmmx2, rmmx0;rmmx2=800a ab9a eaf4 8028; mem2 ; punpcklwd rmmx0, rmmx1;rmmx0=0336 eaf4 fffd 8028 movq mem2, rmmx0;mem2=0336 eaf4 fffd 8028; mem3 ; punpckhwd rmmx2, rmmx1;rmmx2=3ffc 800a 0210 a89a movq mem3, rmmx2;mem3=3ffc 800a 0210 a89a.........

- Windows . 7ffb*7ffe = 3ffc 800. mem3. .

pmaddwd , . , -. -, 64- . , . 2.5.

pmaddwd . . (. 2.5) pmaddwd.

.data; mem dw 5h df 7ffb22223382hmem1 dw 8008h df 7ffe0f7d0ffahmem2 dw 0 df 0mem3 dw 0 df 0.code.........movq rmmx0, mem;rmmx0=7ffb 2222 3382 0005;mem =7ffe 0f7d 0ffa 8008 pmaddwd rmmx0, mem1;rmmx0=420d 28a4 0334 6b1c.........

. 2.5. pmaddwd

MMX- :

pcmpeqb | pcmpeqw | pcmpeqd. , - ;

cmpgtb | pcmpgtw | pcmpgtd. .

pcmpeqb | pcmpeqw | pcmpeqd _1,_2 , . _ 1, -. _2 -, 64- . , . , , , . , , , , .

.data; mem dw 5h df 7fff22223382hmem1 dw 5h df 7ffe0f7d0ffah.code.........movq rmmx0, mem;rmmx0=7fff 2222 3382 0005;mem1 =7ffe 0f7d 0ffa 0005pcmpeqw rmmx0, mem1;rmmx0=0000 0000 0000 ffff.........

pcmpgtb | pcmpgtw | pcmpgtd _1,_2 , . _ 1, -. _2 -, 64- . , . , , , , _1 , _2. , .

, , ( --) .

.data; mem dw 5h df 7fff22223382hmem1 dw 5h df 7ffe0f7d0ffah. code.........movq rmmx0, mem;rmmx0=7fff 2222 3382 0005;mem1 =7ffe 0f7d f0fa 0005 pcmpgtw rmmx0, mem1;rmmx0=ffff ffff 0000 0000.........




:


: 2017-02-25; !; : 368 |


:

:

: , .
==> ...

1376 - | 1318 -


© 2015-2024 lektsii.org - -

: 0.013 .