diff options
Diffstat (limited to 'CSAPP/chap3')
| -rw-r--r-- | CSAPP/chap3/main.c | 17 | ||||
| -rw-r--r-- | CSAPP/chap3/mstore.c | 7 | ||||
| -rw-r--r-- | CSAPP/chap3/mstore.s | 21 | ||||
| -rw-r--r-- | CSAPP/chap3/mstore_intel.S | 22 |
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 |
