|
发表于 2018-5-10 12:40:46
|
显示全部楼层
看反汇编吧,如果看不懂,那就等学完汇编语言以后,再回来看
- 1 .file "main.c"
- 9 .Ltext0:
- 10 .cfi_sections .debug_frame
- 11 .section .rodata
- 12 .LC2:
- 13 0000 2000 .string " "
- 14 .LC3:
- 15 0002 73747231 .string "str1: %s\n"
- 15 3A202573
- 15 0A00
- 16 .LC4:
- 17 000c 73747233 .string "str3: %s\n"
- 17 3A202573
- 17 0A00
- 18 .LC0:
- 19 0016 796F7500 .string "you"
- 20 .LC1:
- 21 001a 446F2079 .string "Do you "
- 21 6F752000
- 22 .text
- 23 .globl main
- 25 main:
- 26 .LFB0:
- 27 .file 1 "main.c"
- 0:main.c **** #include <stdio.h>
- 1:main.c **** #include <string.h>
- 2:main.c ****
- 3:main.c **** int main(void)
- 4:main.c **** {
- 28 .loc 1 5 0
- 29 .cfi_startproc
- 30 0000 55 pushl %ebp
- 31 .cfi_def_cfa_offset 8
- 32 .cfi_offset 5, -8
- 33 0001 89E5 movl %esp, %ebp
- 34 .cfi_def_cfa_register 5
- 35 0003 83E4F0 andl $-16, %esp
- 36 0006 83EC30 subl $48, %esp
- 5:main.c **** char str1[] = "I love";
- 37 .loc 1 6 0
- 38 0009 C7442429 movl $1869357129, 41(%esp)
- 38 49206C6F
- 39 0011 66C74424 movw $25974, 45(%esp)
- 39 2D7665
- 40 0018 C644242F movb $0, 47(%esp)
- 40 00
- 6:main.c **** char str2[] = "you";
- 41 .loc 1 7 0
- 42 001d A1160000 movl .LC0, %eax
- 42 00
- 43 0022 89442425 movl %eax, 37(%esp)
- 7:main.c **** char str3[] = "Do you ";
- 44 .loc 1 8 0
- 45 0026 A11A0000 movl .LC1, %eax
- 45 00
- 46 002b 8B151E00 movl .LC1+4, %edx
- 46 0000
- 47 0031 8944241D movl %eax, 29(%esp)
- 48 0035 89542421 movl %edx, 33(%esp)
- 8:main.c **** char str4[] = "love me ?";
- 49 .loc 1 9 0
- 50 0039 C7442413 movl $1702260588, 19(%esp)
- 50 6C6F7665
- 51 0041 C7442417 movl $543517984, 23(%esp)
- 51 206D6520
- 52 0049 66C74424 movw $63, 27(%esp)
- 52 1B3F00
- 9:main.c ****
- 10:main.c **** strcat(str1, " ");
- 53 .loc 1 11 0
- 54 0050 B8000000 movl $.LC2, %eax
- 54 00
- 55 0055 89442404 movl %eax, 4(%esp)
- 56 0059 8D442429 leal 41(%esp), %eax
- 57 005d 890424 movl %eax, (%esp)
- 58 0060 E8FCFFFF call strcat
- 58 FF
- 11:main.c **** strcat(str1, str2);
- 59 .loc 1 12 0
- 60 0065 8D442425 leal 37(%esp), %eax
- 61 0069 89442404 movl %eax, 4(%esp)
- 62 006d 8D442429 leal 41(%esp), %eax
- 63 0071 890424 movl %eax, (%esp)
- 64 0074 E8FCFFFF call strcat
- 64 FF
- 12:main.c **** printf("str1: %s\n", str1);
- 65 .loc 1 13 0
- 66 0079 B8020000 movl $.LC3, %eax
- 66 00
- 67 007e 8D542429 leal 41(%esp), %edx
- 68 0082 89542404 movl %edx, 4(%esp)
- 69 0086 890424 movl %eax, (%esp)
- 70 0089 E8FCFFFF call printf
- 70 FF
- 13:main.c ****
- 14:main.c **** strncat(str3, str4, 16);
- 71 .loc 1 15 0
- 72 008e 8D442413 leal 19(%esp), %eax
- 73 0092 C7442408 movl $16, 8(%esp)
- 73 10000000
- 74 009a 89442404 movl %eax, 4(%esp)
- 75 009e 8D44241D leal 29(%esp), %eax
- 76 00a2 890424 movl %eax, (%esp)
- 77 00a5 E8FCFFFF call strncat
- 77 FF
- 15:main.c **** printf("str1: %s\n", str1);
- 78 .loc 1 16 0
- 79 00aa B8020000 movl $.LC3, %eax
- 79 00
- 80 00af 8D542429 leal 41(%esp), %edx
- 81 00b3 89542404 movl %edx, 4(%esp)
- 82 00b7 890424 movl %eax, (%esp)
- 83 00ba E8FCFFFF call printf
- 83 FF
- 16:main.c **** printf("str3: %s\n", str3);
- 84 .loc 1 17 0
- 85 00bf B80C0000 movl $.LC4, %eax
- 85 00
- 86 00c4 8D54241D leal 29(%esp), %edx
- 87 00c8 89542404 movl %edx, 4(%esp)
- 88 00cc 890424 movl %eax, (%esp)
- 89 00cf E8FCFFFF call printf
- 89 FF
- 17:main.c ****
- 18:main.c **** return 0;
- 90 .loc 1 19 0
- 91 00d4 B8000000 movl $0, %eax
- 91 00
- 19:main.c **** }
- 92 .loc 1 20 0
- 93 00d9 C9 leave
- 94 .cfi_restore 5
- 95 .cfi_def_cfa 4, 4
- 96 00da C3 ret
- 97 .cfi_endproc
- 98 .LFE0:
- 100 .Letext0:
复制代码 |
|