x86_main.asm
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. ;
  2. ; x86 format converters for HERMES
  3. ; Some routines Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at)
  4. ; This source code is licensed under the GNU LGPL
  5. ; Please refer to the file COPYING.LIB contained in the distribution for
  6. ; licensing conditions
  7. ;
  8. ; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission
  9. BITS 32
  10. GLOBAL _ConvertX86
  11. GLOBAL _x86return
  12. GLOBAL _Hermes_X86_CPU
  13. SECTION .text
  14. ;; _ConvertX86:  
  15. ;; [ESP+8] ConverterInfo*
  16. ;; --------------------------------------------------------------------------
  17. ;; ConverterInfo (ebp+..)
  18. ;;   0: void *s_pixels
  19. ;;   4: int s_width
  20. ;;   8: int s_height
  21. ;;  12: int s_add
  22. ;;  16: void *d_pixels
  23. ;;  20: int d_width
  24. ;;  24: int d_height
  25. ;;  28: int d_add
  26. ;;  32: void (*converter_function)() 
  27. ;;  36: int32 *lookup
  28. _ConvertX86:
  29. push ebp
  30. mov ebp,esp
  31. ; Save the registers used by the blitters, necessary for optimized code
  32. pusha
  33. mov eax,[ebp+8]
  34.         cmp dword [eax+4],BYTE 0
  35. je endconvert
  36. mov ebp,eax
  37. mov esi,[ebp+0]
  38. mov edi,[ebp+16]
  39. y_loop:
  40. mov ecx,[ebp+4]
  41. jmp [ebp+32]
  42. _x86return:
  43. add esi,[ebp+12]
  44. add edi,[ebp+28]
  45. dec dword  [ebp+8]
  46. jnz y_loop
  47. ; Restore the registers used by the blitters, necessary for optimized code
  48. popa
  49. pop ebp
  50. endconvert:
  51. ret
  52. ;; Hermes_X86_CPU returns the CPUID flags in eax
  53. _Hermes_X86_CPU:
  54. pushfd
  55. pop eax
  56. mov ecx,eax
  57. xor eax,040000h
  58. push eax
  59. popfd
  60. pushfd
  61. pop eax
  62. xor eax,ecx
  63. jz .L1 ; Processor is 386
  64. push ecx
  65. popfd
  66. mov eax,ecx
  67. xor eax,200000h
  68. push eax
  69. popfd
  70. pushfd
  71. pop eax
  72. xor eax,ecx
  73. je .L1
  74. push ebx ; ebx is callee-saves
  75. mov eax,1
  76. cpuid
  77. pop ebx
  78. mov eax,edx
  79. .L1:
  80. ret