standard.mac
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. ; Standard macro set for NASM 0.98 -*- nasm -*-
  2. ; Note that although some user-level forms of directives are defined
  3. ; here, not all of them are: the user-level form of a format-specific
  4. ; directive should be defined in the module for that directive.
  5. %define __NASM_MAJOR__ 0
  6. %define __NASM_MINOR__ 98
  7. ; These two need to be defined, though the actual definitions will
  8. ; be constantly updated during preprocessing.
  9. %define __FILE__
  10. %define __LINE__
  11. %define __SECT__ ; it ought to be defined, even if as nothing
  12. %imacro section 1+.nolist
  13. %define __SECT__ [section %1]
  14.   __SECT__
  15. %endmacro
  16. %imacro segment 1+.nolist
  17. %define __SECT__ [segment %1]
  18.   __SECT__
  19. %endmacro
  20. %imacro absolute 1+.nolist
  21. %define __SECT__ [absolute %1]
  22.   __SECT__
  23. %endmacro
  24. %imacro struc 1.nolist
  25. %push struc
  26. %define %$strucname %1
  27. [absolute 0]
  28. %$strucname: ; allow definition of `.member' to work sanely
  29. %endmacro
  30. %imacro endstruc 0.nolist
  31. %{$strucname}_size:
  32. %pop
  33. __SECT__
  34. %endmacro
  35. %imacro istruc 1.nolist
  36. %push istruc
  37. %define %$strucname %1
  38. %$strucstart:
  39. %endmacro
  40. %imacro at 1-2+.nolist
  41.   times %1-($-%$strucstart) db 0
  42.   %2
  43. %endmacro
  44. %imacro iend 0.nolist
  45.   times %{$strucname}_size-($-%$strucstart) db 0
  46. %pop
  47. %endmacro
  48. %imacro align 1-2+.nolist nop
  49.   times ($$-$) & ((%1)-1) %2
  50. %endmacro
  51. %imacro alignb 1-2+.nolist resb 1
  52.   times ($$-$) & ((%1)-1) %2
  53. %endmacro
  54. %imacro extern 1-*.nolist
  55. %rep %0
  56. [extern %1]
  57. %rotate 1
  58. %endrep
  59. %endmacro
  60. %imacro bits 1+.nolist
  61. [bits %1]
  62. %endmacro
  63. %imacro global 1-*.nolist
  64. %rep %0
  65. [global %1]
  66. %rotate 1
  67. %endrep
  68. %endmacro
  69. %imacro common 1-*.nolist
  70. %rep %0
  71. [common %1]
  72. %rotate 1
  73. %endrep
  74. %endmacro