| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- .globl _bbArgp
- .globl __bbExEnter
- .globl __bbExThrow
- .text
- _bbArgp:
- # 0[esp]=our ret
- # 4[esp]=offset arg
- # 0[ebp]=caller oldebp
- # 4[ebp]=caller ret
- # 8[ebp]=caller first arg!
- lea 8(%ebp),%eax
- add 4(%esp),%eax
- ret
- # 0[esp]=ret
- # 4[esp]=state block
- __bbExEnter:
- mov 4(%esp),%edx
- #
- mov %ebx,(%edx)
- mov %esi,4(%edx)
- mov %edi,8(%edx)
- mov %ebp,12(%edx)
- #
- mov (%esp),%ecx
- mov %esp,16(%edx)
- mov %ecx,20(%edx)
- #
- xor %eax,%eax
- ret
- # 0[esp]=ret
- # 4[esp]=state block
- # 8[esp]=throw value
- __bbExThrow:
- mov 4(%esp),%edx
- mov 8(%esp),%eax
- # ;
- mov 12(%edx),%ebp
- mov 8(%edx),%edi
- mov 4(%edx),%esi
- mov (%edx),%ebx
- # ;
- mov 20(%edx),%ecx
- mov 16(%edx),%esp
- add $4,%esp
- jmp *%ecx
|