home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / oxcc1433.zip / SRC / ECALL.S < prev    next >
Text File  |  1995-05-10  |  2KB  |  121 lines

  1. .text
  2.     .align 2
  3. .globl __jumpToMethod
  4. __jumpToMethod:
  5.     pushl %ebp
  6.     movl %esp,%ebp
  7.     movl 8(%ebp),%eax
  8.     leave
  9.     leave
  10.     jmp *%eax
  11.  
  12.     .align 2
  13. .globl __callExtern
  14. __callExtern:
  15.     pushl %ebp
  16.     movl %esp,%ebp
  17.     pushl %edi
  18.     pushl %esi
  19.     pushl %ebx
  20.  
  21.     cmpl $0,20(%ebp)
  22.     jz    L0
  23.     movl 20(%ebp),%ecx
  24.     subl %ecx,%esp
  25.     movl %esp,%edi
  26.     movl 16(%ebp),%esi
  27.     sarl $2,%ecx
  28.     cld
  29.     rep
  30.     movsl
  31.     .align 2,0x90
  32. L0:
  33.     cmpl $0,12(%ebp)
  34.     jz    L1
  35.     pushl 12(%ebp)
  36.     .align 2,0x90
  37. L1:
  38.     movl 8(%ebp),%eax
  39.     call *%eax
  40.  
  41.     addl 20(%ebp),%esp
  42.     popl %ebx
  43.     popl %esi
  44.     popl %edi
  45.     leave
  46.     ret    
  47.  
  48.     .align 2
  49. .globl __ExternCall
  50. __ExternCall:
  51.     pushl %ebp
  52.     movl %esp,%ebp
  53.     pushl %edi
  54.     pushl %esi
  55.     pushl %ebx
  56.  
  57.     cmpl $0,16(%ebp)
  58.     jz    L3
  59.     movl 16(%ebp),%ecx
  60.     subl %ecx,%esp
  61.     movl %esp,%edi
  62.     movl 12(%ebp),%esi
  63.     sarl $2,%ecx
  64.     cld
  65.     rep
  66.     movsl
  67.     .align 2,0x90
  68. L3:
  69.     movl 8(%ebp),%eax
  70.     call *%eax
  71.     addl 16(%ebp),%esp
  72.  
  73.     movl 20(%ebp),%ecx
  74.     movl %eax,(%ecx)
  75.     movl %edx,4(%ecx)
  76.  
  77.     popl %ebx
  78.     popl %esi
  79.     popl %edi
  80.     leave
  81.     ret
  82.  
  83.     .align 2
  84. .globl __ExternCallS
  85. __ExternCallS:
  86.     pushl %ebp
  87.     movl %esp,%ebp
  88.     pushl %edi
  89.     pushl %esi
  90.     pushl %ebx
  91.  
  92.     cmpl $0,16(%ebp)
  93.     jz    L4
  94.     movl 16(%ebp),%ecx
  95.     subl %ecx,%esp
  96.     movl %esp,%edi
  97.     movl 12(%ebp),%esi
  98.     sarl $2,%ecx
  99.     cld
  100.     rep
  101.     movsl
  102.     .align 2,0x90
  103. L4:
  104.     movl 8(%ebp),%eax
  105.     call *%eax
  106.     subl $4,%esp
  107.     addl 16(%ebp),%esp
  108.  
  109.     movl 20(%ebp),%ecx
  110.     movl %eax,(%ecx)
  111.     movl %edx,4(%ecx)
  112.  
  113.     popl %ebx
  114.     popl %esi
  115.     popl %edi
  116.     leave
  117.     ret
  118.  
  119.  
  120.  
  121.