summaryrefslogtreecommitdiff
path: root/05/tcc-0.9.25/lib/alloca86-bt.S
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-02-17 13:22:13 -0500
committerpommicket <pommicket@gmail.com>2022-02-17 13:22:13 -0500
commite900dd8d6f2ff7cef66fbd31898d375b71ef53d6 (patch)
treeae732e8f5d6163acb78355ae4e5ca69d6e0c995e /05/tcc-0.9.25/lib/alloca86-bt.S
parent6e1158f49aa014b801b171b358c47389e7f9964e (diff)
procuding a (non-working) executable for tcc
Diffstat (limited to '05/tcc-0.9.25/lib/alloca86-bt.S')
-rw-r--r--05/tcc-0.9.25/lib/alloca86-bt.S45
1 files changed, 45 insertions, 0 deletions
diff --git a/05/tcc-0.9.25/lib/alloca86-bt.S b/05/tcc-0.9.25/lib/alloca86-bt.S
new file mode 100644
index 0000000..994da20
--- /dev/null
+++ b/05/tcc-0.9.25/lib/alloca86-bt.S
@@ -0,0 +1,45 @@
+/* ---------------------------------------------- */
+/* alloca86b.S */
+
+#include "../config.h"
+
+.globl __bound_alloca
+
+__bound_alloca:
+ pop %edx
+ pop %eax
+ mov %eax, %ecx
+ add $3,%eax
+ and $-4,%eax
+ jz p6
+
+#ifdef TCC_TARGET_PE
+p4:
+ cmp $4096,%eax
+ jle p5
+ sub $4096,%esp
+ sub $4096,%eax
+ test %eax,(%esp)
+ jmp p4
+
+p5:
+#endif
+
+ 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
+
+/* ---------------------------------------------- */