cpu-a.asm
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:3k
源码类别:

Audio

开发平台:

Visual C++

  1. ;*****************************************************************************
  2. ;* cpu.asm: h264 encoder library
  3. ;*****************************************************************************
  4. ;* Copyright (C) 2003 x264 project
  5. ;* $Id: cpu.asm,v 1.1 2004/06/03 19:27:07 fenrir Exp $
  6. ;*
  7. ;* Authors: Laurent Aimar <fenrir@via.ecp.fr>
  8. ;*
  9. ;* This program is free software; you can redistribute it and/or modify
  10. ;* it under the terms of the GNU General Public License as published by
  11. ;* the Free Software Foundation; either version 2 of the License, or
  12. ;* (at your option) any later version.
  13. ;*
  14. ;* This program is distributed in the hope that it will be useful,
  15. ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. ;* GNU General Public License for more details.
  18. ;*
  19. ;* You should have received a copy of the GNU General Public License
  20. ;* along with this program; if not, write to the Free Software
  21. ;* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22. ;*****************************************************************************
  23. BITS 32
  24. ;=============================================================================
  25. ; Macros and other preprocessor constants
  26. ;=============================================================================
  27. %include "i386inc.asm"
  28. ;=============================================================================
  29. ; Code
  30. ;=============================================================================
  31. SECTION .text
  32. cglobal x264_cpu_cpuid_test
  33. cglobal x264_cpu_cpuid
  34. cglobal x264_emms
  35. ALIGN 16
  36. ;-----------------------------------------------------------------------------
  37. ;   int __cdecl x264_cpu_cpuid_test( void ) return 0 if unsupported
  38. ;-----------------------------------------------------------------------------
  39. x264_cpu_cpuid_test:
  40.     pushfd
  41.     push    ebx
  42.     push    ebp
  43.     push    esi
  44.     push    edi
  45.     pushfd
  46.     pop     eax
  47.     mov     ebx, eax
  48.     xor     eax, 0x200000
  49.     push    eax
  50.     popfd
  51.     pushfd
  52.     pop     eax
  53.     xor     eax, ebx
  54.     
  55.     pop     edi
  56.     pop     esi
  57.     pop     ebp
  58.     pop     ebx
  59.     popfd
  60.     ret
  61. ALIGN 16
  62. ;-----------------------------------------------------------------------------
  63. ;   int __cdecl x264_cpu_cpuid( int op, int *eax, int *ebx, int *ecx, int *edx )
  64. ;-----------------------------------------------------------------------------
  65. x264_cpu_cpuid:
  66.     push    ebp
  67.     mov     ebp,    esp
  68.     push    ebx
  69.     push    esi
  70.     push    edi
  71.     
  72.     mov     eax,    [ebp +  8]
  73.     cpuid
  74.     mov     esi,    [ebp + 12]
  75.     mov     [esi],  eax
  76.     mov     esi,    [ebp + 16]
  77.     mov     [esi],  ebx
  78.     mov     esi,    [ebp + 20]
  79.     mov     [esi],  ecx
  80.     mov     esi,    [ebp + 24]
  81.     mov     [esi],  edx
  82.     pop     edi
  83.     pop     esi
  84.     pop     ebx
  85.     pop     ebp
  86.     ret
  87. ALIGN 16
  88. ;-----------------------------------------------------------------------------
  89. ;   void __cdecl x264_emms( void )
  90. ;-----------------------------------------------------------------------------
  91. x264_emms:
  92.     emms
  93.     ret