cpu_feat.nas

来自「mp3编码源代码」· NAS 代码 · 共 108 行

NAS
108
字号
;;; 	assembler routines to detect CPU-features;;	MMX / 3DNow! / SSE / SSE2;;	for the LAME project;	Frank Klemm, Robert Hegemann 2000-10-12;%include "nasm.h"	globaldef	has_MMX_nasm	globaldef	has_3DNow_nasm	globaldef	has_SSE_nasm	globaldef	has_SSE2_nasm        segment_codetestCPUID:	pushfd	                        	pop	eax	mov	ecx,eax	xor	eax,0x200000	push	eax	popfd	pushfd	pop	eax	cmp	eax,ecx	ret;---------------------------------------;	int  has_MMX_nasm (void);---------------------------------------has_MMX_nasm:        pushad	call	testCPUID	jz	return0		; no CPUID command, so no MMX	mov	eax,0x1	CPUID	test	edx,0x800000	jz	return0		; no MMX support	jmp	return1		; MMX support        ;---------------------------------------;	int  has_SSE_nasm (void);---------------------------------------has_SSE_nasm:        pushad	call	testCPUID	jz	return0		; no CPUID command, so no SSE        	mov	eax,0x1	CPUID	test	edx,0x02000000	jz	return0		; no SSE support	jmp	return1		; SSE support        ;---------------------------------------;	int  has_SSE2_nasm (void);---------------------------------------has_SSE2_nasm:        pushad	call	testCPUID	jz	return0		; no CPUID command, so no SSE2        	mov	eax,0x1	CPUID	test	edx,0x04000000	jz	return0		; no SSE2 support	jmp	return1		; SSE2 support        ;---------------------------------------;	int  has_3DNow_nasm (void);---------------------------------------has_3DNow_nasm:        pushad	call	testCPUID	jz	return0		; no CPUID command, so no 3DNow!	mov	eax,0x80000000	CPUID	cmp	eax,0x80000000	jbe	return0		; no extended MSR(1), so no 3DNow!	mov	eax,0x80000001	CPUID	test	edx,0x80000000	jz	return0		; no 3DNow! support				; 3DNow! supportreturn1:	popad	xor	eax,eax	inc	eax	retreturn0:	popad	xor	eax,eax	ret                end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?