哪为高手能告诉我下面程序的bits 32什么意思吗???谢谢!!我无法编译这个asm
bits 32
section .data
%macro cglobal 1
%ifdef PREFIX
global _%1
%define %1 _%1
%else
global %1
%endif
%endmacro
align 16
ignore_dc dw 0, -1, -1, -1, -1, -1, -1, -1
section .text
cglobal calc_cbp_sse2
%macro LOOP_SSE2 1
movdqa xmm0, [edx+(%1)*128]
pand xmm0, xmm7
movdqa xmm1, [edx+(%1)*128+16]
por xmm0, [edx+(%1)*128+32]
por xmm1, [edx+(%1)*128+48]
por xmm0, [edx+(%1)*128+64]
por xmm1, [edx+(%1)*128+80]
por xmm0, [edx+(%1)*128+96]
por xmm1, [edx+(%1)*128+112]
por xmm0, xmm1 ; xmm0 = xmm1 = 128 bits worth of info
psadbw xmm0, xmm6 ; contains 2 dwords with sums
movhlps xmm1, xmm0 ; move high dword from xmm0 to low xmm1
por xmm0, xmm1 ; combine
movd ecx, xmm0 ; if ecx set, values were found
test ecx, ecx
%endmacro
align 16
calc_cbp_sse2:
mov edx, [esp+4] ; coeff[]
xor eax, eax ; cbp = 0
movdqu xmm7, [ignore_dc] ; mask to ignore dc value
pxor xmm6, xmm6 ; zero
LOOP_SSE2 0
test ecx, ecx
jz .blk2
or eax, (1<<5)
.blk2
LOOP_SSE2 1
test ecx, ecx
jz .blk3
or eax, (1<<4)
.blk3
LOOP_SSE2 2
test ecx, ecx
jz .blk4
or eax, (1<<3)
.blk4
LOOP_SSE2 3
test ecx, ecx
jz .blk5
or eax, (1<<2)
.blk5
LOOP_SSE2 4
test ecx, ecx
jz .blk6
or eax, (1<<1)
.blk6
LOOP_SSE2 5
test ecx, ecx
jz .finished
or eax, (1<<0)
.finished
ret
我以前学的是8086的指令,我根本看不懂这段代码,您能给我解释一下吗??谢谢你了!!!bits 32 是什么意思??
%macro cglobal 1
%ifdef PREFIX
global _%1
%define %1 _%1
%else
global %1
%endif
%endmacro 又是什么意思,我根本没有办法编译它,您能告诉我怎么作吗???急死我了!!谢谢了!!