alloca86.S 509 B

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