diff options
| author | grischka <grischka> | 2007-11-23 00:03:03 +0000 |
|---|---|---|
| committer | grischka <grischka> | 2007-11-23 00:03:03 +0000 |
| commit | 3e8b9e6d1051c1d8d7ce13137ffbe51f4f7f53c5 (patch) | |
| tree | a151631f218c6b8e8da175a595c8c6595862be59 | |
| parent | d778bde7f9683d046f421ac4399fbbdfd9726f98 (diff) | |
| download | tinycc-3e8b9e6d1051c1d8d7ce13137ffbe51f4f7f53c5.tar.gz tinycc-3e8b9e6d1051c1d8d7ce13137ffbe51f4f7f53c5.tar.bz2 | |
New files: alloca86.S alloca86-bt.S
| -rw-r--r-- | alloca86-bt.S | 42 | ||||
| -rw-r--r-- | alloca86.S | 27 |
2 files changed, 69 insertions, 0 deletions
diff --git a/alloca86-bt.S b/alloca86-bt.S new file mode 100644 index 0000000..50a671e --- /dev/null +++ b/alloca86-bt.S @@ -0,0 +1,42 @@ +/* ---------------------------------------------- */ +/* alloca86b.S */ + +.globl __bound___alloca + +__bound___alloca: + pop %edx + pop %eax + mov %eax, %ecx + add $3,%eax + and $-4,%eax + jz p6 + +p4: + cmp $4096,%eax + jle p5 + sub $4096,%esp + sub $4096,%eax + test %eax,(%esp) + jmp p4 + +p5: + sub %eax,%esp + mov %esp,%eax + + push %edx + push %eax + + push %ecx + push %eax + call __bound_new_region + add $8, %esp + + pop %eax + pop %edx + +p6: + push %edx + push %edx + ret + +/* ---------------------------------------------- */ diff --git a/alloca86.S b/alloca86.S new file mode 100644 index 0000000..c8f0c25 --- /dev/null +++ b/alloca86.S @@ -0,0 +1,27 @@ +/* ---------------------------------------------- */ +/* alloca86.S */ + +.globl _alloca + +_alloca: + pop %edx + pop %eax + add $3,%eax + and $-4,%eax + jz p3 +p1: + cmp $4096,%eax + jle p2 + sub $4096,%esp + sub $4096,%eax + test %eax,(%esp) + jmp p1 +p2: + sub %eax,%esp + mov %esp,%eax +p3: + push %edx + push %edx + ret + +/* ---------------------------------------------- */ |
