1 ADD_1: dd 01010101h, 01010101h
2 MASK_AND: dd 7f7f7f7fh, 7f7f7f7fh
3 PLUS_384: dd 01800180h, 01800180h
4 PLUS_128: dd 00800080h, 00800080h
6 %assign LocalFrameSize 0
7 %assign RegisterStorageSize 16
10 %assign source LocalFrameSize + RegisterStorageSize + 4
11 %assign dest LocalFrameSize + RegisterStorageSize + 8
12 %assign lx2 LocalFrameSize + RegisterStorageSize + 12
13 %assign h LocalFrameSize + RegisterStorageSize + 16
15 ; Locals (on local stack frame)
18 ; extern void C rec_mmx (
19 ; unsigned char *source,
20 ; unsigned char *dest,
24 ; The local variables are on the stack,
83 ; sub esp, LocalFrameSize
105 ; add esp, LocalFrameSize
114 %assign RegisterStorageSize 20
115 %assign source LocalFrameSize + RegisterStorageSize + 4
116 %assign dest LocalFrameSize + RegisterStorageSize + 8
117 %assign lx LocalFrameSize + RegisterStorageSize + 12
118 %assign lx2 LocalFrameSize + RegisterStorageSize + 16
119 %assign h LocalFrameSize + RegisterStorageSize + 20
128 mov esi, [esp+source]
187 mov esi, [esp+source]
223 %assign RegisterStorageSize 20
224 %assign rfp LocalFrameSize + RegisterStorageSize + 4
225 %assign bp LocalFrameSize + RegisterStorageSize + 8
226 %assign iincr LocalFrameSize + RegisterStorageSize + 12
228 ; FIXME clipping needs to be done
240 ; movq mm7, [PLUS_384]
244 movq mm0, [edi] ; get dest