summaryrefslogtreecommitdiff
path: root/3/3_data_formats
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2024-05-22 08:49:29 +0200
committerMike Vink <mike@pionative.com>2024-05-22 08:49:29 +0200
commit51169f5f9ab178a4ddfe9dac461405a71c9c0f94 (patch)
tree0b6bb0c6c31ee27361b28e2c5993f362c1cc95e2 /3/3_data_formats
parent77f19e4a89d8dec97930c5e237139734c5fb3365 (diff)
organise
Diffstat (limited to '3/3_data_formats')
-rw-r--r--3/3_data_formats/main.c16
-rw-r--r--3/3_data_formats/mstore/mstore.c6
-rw-r--r--3/3_data_formats/mstore/mstore.s21
3 files changed, 43 insertions, 0 deletions
diff --git a/3/3_data_formats/main.c b/3/3_data_formats/main.c
new file mode 100644
index 0000000..7fac153
--- /dev/null
+++ b/3/3_data_formats/main.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+void multstore(long, long, long *);
+
+long mult2(long a, long b) {
+ long s = a * b;
+ return s;
+}
+
+int main() {
+ long d;
+ multstore(2, 3, &d);
+ printf("2 * 3 --> %ld\n", d);
+ return 0;
+}
+
diff --git a/3/3_data_formats/mstore/mstore.c b/3/3_data_formats/mstore/mstore.c
new file mode 100644
index 0000000..cdcf205
--- /dev/null
+++ b/3/3_data_formats/mstore/mstore.c
@@ -0,0 +1,6 @@
+long mult2(long, long);
+
+void multstore(long x, long y, long *dest) {
+ long t = mult2(x, y);
+ *dest = t;
+}
diff --git a/3/3_data_formats/mstore/mstore.s b/3/3_data_formats/mstore/mstore.s
new file mode 100644
index 0000000..e215a2b
--- /dev/null
+++ b/3/3_data_formats/mstore/mstore.s
@@ -0,0 +1,21 @@
+ .file "mstore.c"
+ .text
+ .globl multstore
+ .type multstore, @function
+multstore:
+.LFB0:
+ .cfi_startproc
+ pushq %rbx
+ .cfi_def_cfa_offset 16
+ .cfi_offset 3, -16
+ movq %rdx, %rbx
+ call mult2@PLT
+ movq %rax, (%rbx)
+ popq %rbx
+ .cfi_def_cfa_offset 8
+ ret
+ .cfi_endproc
+.LFE0:
+ .size multstore, .-multstore
+ .ident "GCC: (GNU) 12.3.0"
+ .section .note.GNU-stack,"",@progbits