/* ---------------------------------------------- *//* alloca86.S */ #ifdef __leading_underscore# define _(s) _##s#else# define _(s) s#endif .globl _(alloca)_(alloca): pop %edx pop %eax add $3,%eax and $-4,%eax jz p3 #ifdef _WIN32p1: cmp $4096,%eax jbe p2 test %eax,-4096(%esp) sub $4096,%esp sub $4096,%eax jmp p1p2:#endif sub %eax,%esp mov %esp,%eaxp3: push %edx push %edx ret /* ---------------------------------------------- */
/* ---------------------------------------------- */
/* alloca86.S */
#ifdef __leading_underscore
# define _(s) _##s
#else
# define _(s) s
#endif
.globl _(alloca)
_(alloca):
pop %edx
pop %eax
add $3,%eax
and $-4,%eax
jz p3
#ifdef _WIN32
p1:
cmp $4096,%eax
jbe p2
test %eax,-4096(%esp)
sub $4096,%esp
sub $4096,%eax
jmp p1
p2:
#endif
sub %eax,%esp
mov %esp,%eax
p3:
push %edx
push %edx
ret
/* ---------------------------------------------- */