blitz_ex.win32.x86.s 548 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. format MS COFF
  2. public __bbExEnter
  3. public __bbExThrow
  4. section "code" code
  5. ;0[esp]=ret
  6. ;4[esp]=state block
  7. __bbExEnter:
  8. mov edx,[esp+4]
  9. ;
  10. mov [edx+0],ebx
  11. mov [edx+4],esi
  12. mov [edx+8],edi
  13. mov [edx+12],ebp
  14. ;
  15. mov ecx,[esp]
  16. mov [edx+16],esp
  17. mov [edx+20],ecx
  18. ;
  19. xor eax,eax
  20. ret
  21. ;0[esp]=ret
  22. ;4[esp]=state block
  23. ;8[esp]=throw value
  24. __bbExThrow:
  25. mov edx,[esp+4]
  26. mov eax,[esp+8]
  27. ;
  28. mov ebp,[edx+12]
  29. mov edi,[edx+8]
  30. mov esi,[edx+4]
  31. mov ebx,[edx+0]
  32. ;
  33. mov ecx,[edx+20]
  34. mov esp,[edx+16]
  35. add esp,4
  36. jmp ecx