aboutsummaryrefslogtreecommitdiff
path: root/examples/learn/23-c-abi.zc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/learn/23-c-abi.zc')
-rw-r--r--examples/learn/23-c-abi.zc12
1 files changed, 12 insertions, 0 deletions
diff --git a/examples/learn/23-c-abi.zc b/examples/learn/23-c-abi.zc
new file mode 100644
index 0000000..3df4b75
--- /dev/null
+++ b/examples/learn/23-c-abi.zc
@@ -0,0 +1,12 @@
+fn put_f(x) { asm { x @ #1220 } return 0; }
+extern double sqrt(double);
+extern void qsort(word *base, long n, long size, void *cmp);
+int cmp(int* a, int* b) { return *a - *b; }
+fn main() {
+ let a[4];
+ a[0] = 5; a[1] = 3; a[2] = 9; a[3] = 1;
+ put_f(sqrt(2.0)); put_c(10);
+ qsort(a, 4, 8, cfunc(cmp));
+ put_n(a[0]); put_c(32); put_n(a[1]); put_c(32); put_n(a[2]); put_c(32); put_n(a[3]); put_c(10);
+ return 0;
+}