alloca86.S 483 B

1234567891011121314151617181920212223242526272829303132
  1. /* ---------------------------------------------- */
  2. /* alloca86.S */
  3. .globl alloca
  4. alloca:
  5. pop %edx
  6. pop %eax
  7. add $3,%eax
  8. and $-4,%eax
  9. jz p3
  10. #ifdef _WIN32
  11. p1:
  12. cmp $4096,%eax
  13. jbe p2
  14. test %eax,-4096(%esp)
  15. sub $4096,%esp
  16. sub $4096,%eax
  17. jmp p1
  18. p2:
  19. #endif
  20. sub %eax,%esp
  21. mov %esp,%eax
  22. p3:
  23. push %edx
  24. push %edx
  25. ret
  26. /* ---------------------------------------------- */