home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Sound / LAME / src / i386 / nasm.h < prev   
C/C++ Source or Header  |  2000-07-26  |  3KB  |  179 lines

  1.  
  2. ;    Copyright (C) 1999 URURI
  3.  
  4. ;    nasmÍÑ¥Þ¥¯¥í
  5. ;    1999/08/21 ºîÀ®
  6. ;    1999/10/10 ´ö¤Ä¤«ÄɲÃ
  7. ;    1999/10/27 aoutÂбþ
  8. ;    1999/11/07 pushf, popf ¤ÎNASM¤Î¥Ð¥°Âбþ
  9. ;    1999/12/02 for BCC ( Thanks to Miquel )
  10.  
  11. ; for Windows Visual C++        -> define WIN32
  12. ;             Borland or cygwin ->        WIN32 and COFF
  13. ; for FreeBSD 2.x               ->        AOUT
  14. ; for TownsOS                   ->        __tos__
  15. ; otherwise                     ->   none
  16.  
  17. ;̾Á°¤ÎÉÕ¤±Êý
  18.  
  19. BITS 32
  20.  
  21. %ifdef WIN32
  22.     %define _NAMING
  23.     %define segment_code segment .text align=16 class=CODE use32
  24.     %define segment_data segment .data align=16 class=DATA use32
  25. %ifdef __BORLANDC__
  26.     %define segment_bss  segment .data align=16 class=DATA use32
  27. %else
  28.     %define segment_bss  segment .bss align=16 class=DATA use32
  29. %endif
  30. %elifdef AOUT
  31.     %define _NAMING
  32.     %define segment_code segment .text
  33.     %define segment_data segment .data
  34.     %define segment_bss  segment .bss
  35. %else
  36.     %define segment_code segment .text align=16 class=CODE use32
  37.     %define segment_data segment .data align=16 class=DATA use32
  38.     %define segment_bss  segment .bss align=16 class=DATA use32
  39. %endif
  40.  
  41. %ifdef __tos__
  42. group CGROUP text
  43. group DGROUP data
  44. %endif
  45.  
  46. ;ñÀºÅÙÉâÆ°¾®¿ôÅÀ·Á¼°
  47.  
  48. %idefine float dword
  49. %idefine fsize 4
  50. %idefine fsizen(a) (fsize*(a))
  51.  
  52. ;¥ï¡¼¥É·Á¼°
  53.  
  54. %idefine wsize 2
  55. %idefine wsizen(a) (wsize*(a))
  56. %idefine dwsize 4
  57. %idefine dwsizen(a) (dwsize*(a))
  58.  
  59. ;REG
  60.  
  61. %define r0 eax
  62. %define r1 ebx
  63. %define r2 ecx
  64. %define r3 edx
  65. %define r4 esi
  66. %define r5 edi
  67. %define r6 ebp
  68. %define r7 esp
  69.  
  70. ;MMX,3DNow!,SSE
  71.  
  72. %define pmov    movq
  73. %define pmovd    movd
  74.  
  75. %define pupldq    punpckldq
  76. %define puphdq    punpckhdq
  77. %define puplwd    punpcklwd
  78. %define puphwd    punpckhwd
  79.  
  80. %define xm0 xmm0
  81. %define xm1 xmm1
  82. %define xm2 xmm2
  83. %define xm3 xmm3
  84. %define xm4 xmm4
  85. %define xm5 xmm5
  86. %define xm6 xmm6
  87. %define xm7 xmm7
  88.  
  89. ;¥·¥ã¥Ã¥Õ¥ëÍѤÎ4¿Ê¥Þ¥¯¥í
  90.  
  91. %define R4(a,b,c,d) (a*64+b*16+c*4+d)
  92.  
  93. ;C¥é¥¤¥¯¤Ê´Ê°×¥Þ¥¯¥í
  94.  
  95. %imacro globaldef 1
  96.     %ifdef _NAMING
  97.         %define %1 _%1
  98.     %endif
  99.     global %1
  100. %endmacro
  101.  
  102. %imacro externdef 1
  103.     %ifdef _NAMING
  104.         %define %1 _%1
  105.     %endif
  106.     extern %1
  107. %endmacro
  108.  
  109. %imacro proc 1
  110.     %push    proc
  111.     %ifdef _NAMING
  112.         global _%1
  113.     %else
  114.         global %1
  115.     %endif
  116.  
  117.     align 32
  118. %1:
  119. _%1:
  120.  
  121.     %assign %$STACK 0
  122.     %assign %$STACKN 0
  123.     %assign %$ARG 4
  124. %endmacro
  125.  
  126. %imacro endproc 0
  127.     %ifnctx proc
  128.         %error expected 'proc' before 'endproc'.
  129.     %else
  130.         %if %$STACK > 0
  131.             add esp, %$STACK
  132.         %endif
  133.  
  134.         %if %$STACK <> (-%$STACKN)
  135.             %error STACKLEVEL mismatch check 'local', 'alloc', 'pushd', 'popd'
  136.         %endif
  137.  
  138.         ret
  139.         %pop
  140.     %endif
  141. %endmacro
  142.  
  143. %idefine sp(a) esp+%$STACK+a
  144.  
  145. %imacro arg 1
  146.     %00    equ %$ARG
  147.     %assign %$ARG %$ARG+%1
  148. %endmacro
  149.  
  150. %imacro local 1
  151.     %assign %$STACKN %$STACKN-%1
  152.     %00 equ %$STACKN
  153. %endmacro
  154.  
  155. %imacro alloc 0
  156.     sub esp, (-%$STACKN)-%$STACK
  157.     %assign %$STACK (-%$STACKN)
  158. %endmacro
  159.  
  160. %imacro pushd 1-*
  161.     %rep %0
  162.         push %1
  163.         %assign %$STACK %$STACK+4
  164.     %rotate 1
  165.     %endrep
  166. %endmacro
  167.  
  168. %imacro popd 1-*
  169.     %rep %0
  170.     %rotate -1
  171.         pop %1
  172.         %assign %$STACK %$STACK-4
  173.     %endrep
  174. %endmacro
  175.  
  176. ; bug of NASM-0.98
  177. %define pushf db 0x66, 0x9C
  178. %define popf  db 0x66, 0x9D
  179.