summaryrefslogtreecommitdiff
path: root/CSAPP/chap3
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-10 22:55:07 +0200
committerCarlos Maiolino <[email protected]>2025-07-10 22:56:55 +0200
commitd98f46ce647846b0aa30b2e16a30fd4e152a1bf5 (patch)
tree267474fcc77cf20b428f6f4c7f768ca09f4cfe0e /CSAPP/chap3
parent869e68986aa8f69af6e7842260a68d1e5c6f796f (diff)
Add new code
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'CSAPP/chap3')
-rw-r--r--CSAPP/chap3/main.c17
-rw-r--r--CSAPP/chap3/mstore.c7
-rw-r--r--CSAPP/chap3/mstore.s21
-rw-r--r--CSAPP/chap3/mstore_intel.S22
4 files changed, 67 insertions, 0 deletions
diff --git a/CSAPP/chap3/main.c b/CSAPP/chap3/main.c
new file mode 100644
index 0000000..b4f7152
--- /dev/null
+++ b/CSAPP/chap3/main.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+
+void multstore(long, long, long*);
+
+int main(void)
+{
+ long d;
+ multstore(2, 3, &d);
+ printf("2 * 3 --> %ld\n", d);
+ return 0;
+}
+
+long mult2(long a, long b)
+{
+ long s = a * b;
+ return s;
+}
diff --git a/CSAPP/chap3/mstore.c b/CSAPP/chap3/mstore.c
new file mode 100644
index 0000000..8db0d29
--- /dev/null
+++ b/CSAPP/chap3/mstore.c
@@ -0,0 +1,7 @@
+long mult2(long, long);
+
+void multstore(long x, long y, long *dest)
+{
+ long t = mult2(x, y);
+ *dest = t;
+}
diff --git a/CSAPP/chap3/mstore.s b/CSAPP/chap3/mstore.s
new file mode 100644
index 0000000..78a6c6f
--- /dev/null
+++ b/CSAPP/chap3/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
+ movq %rax, (%rbx)
+ popq %rbx
+ .cfi_def_cfa_offset 8
+ ret
+ .cfi_endproc
+.LFE0:
+ .size multstore, .-multstore
+ .ident "GCC: (GNU) 10.1.1 20200507 (Red Hat 10.1.1-1)"
+ .section .note.GNU-stack,"",@progbits
diff --git a/CSAPP/chap3/mstore_intel.S b/CSAPP/chap3/mstore_intel.S
new file mode 100644
index 0000000..ca4fa2a
--- /dev/null
+++ b/CSAPP/chap3/mstore_intel.S
@@ -0,0 +1,22 @@
+ .file "mstore.c"
+ .intel_syntax noprefix
+ .text
+ .globl multstore
+ .type multstore, @function
+multstore:
+.LFB0:
+ .cfi_startproc
+ push rbx
+ .cfi_def_cfa_offset 16
+ .cfi_offset 3, -16
+ mov rbx, rdx
+ call mult2
+ mov QWORD PTR [rbx], rax
+ pop rbx
+ .cfi_def_cfa_offset 8
+ ret
+ .cfi_endproc
+.LFE0:
+ .size multstore, .-multstore
+ .ident "GCC: (GNU) 10.1.1 20200507 (Red Hat 10.1.1-1)"
+ .section .note.GNU-stack,"",@progbits