Stage of compilation

This commit is contained in:
2024-02-03 21:43:43 +05:30
parent 303233ccbe
commit ebafca3461
8 changed files with 1132 additions and 0 deletions

BIN
Four_stage_Compilation/exetest Executable file

Binary file not shown.

127
Four_stage_Compilation/temp Normal file
View File

@@ -0,0 +1,127 @@
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <compute_square>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc mov %edi,-0x4(%rbp)
7: 8b 45 fc mov -0x4(%rbp),%eax
a: 0f af c0 imul %eax,%eax
d: 66 0f ef c0 pxor %xmm0,%xmm0
11: f2 0f 2a c0 cvtsi2sd %eax,%xmm0
15: 66 48 0f 7e c0 movq %xmm0,%rax
1a: 66 48 0f 6e c0 movq %rax,%xmm0
1f: 5d pop %rbp
20: c3 ret
0000000000000021 <compute_circle_area>:
21: 55 push %rbp
22: 48 89 e5 mov %rsp,%rbp
25: 48 83 ec 08 sub $0x8,%rsp
29: 89 7d fc mov %edi,-0x4(%rbp)
2c: 8b 45 fc mov -0x4(%rbp),%eax
2f: 89 c7 mov %eax,%edi
31: e8 00 00 00 00 call 36 <compute_circle_area+0x15>
36: f2 0f 10 0d 00 00 00 movsd 0x0(%rip),%xmm1 # 3e <compute_circle_area+0x1d>
3d: 00
3e: f2 0f 59 c1 mulsd %xmm1,%xmm0
42: 66 48 0f 7e c0 movq %xmm0,%rax
47: 66 48 0f 6e c0 movq %rax,%xmm0
4c: c9 leave
4d: c3 ret
000000000000004e <main>:
4e: 55 push %rbp
4f: 48 89 e5 mov %rsp,%rbp
52: 48 83 ec 20 sub $0x20,%rsp
56: 89 7d ec mov %edi,-0x14(%rbp)
59: 48 89 75 e0 mov %rsi,-0x20(%rbp)
5d: c7 45 fc 0a 00 00 00 movl $0xa,-0x4(%rbp)
64: 8b 45 fc mov -0x4(%rbp),%eax
67: 89 c7 mov %eax,%edi
69: e8 00 00 00 00 call 6e <main+0x20>
6e: bf 64 00 00 00 mov $0x64,%edi
73: e8 00 00 00 00 call 78 <main+0x2a>
78: b8 00 00 00 00 mov $0x0,%eax
7d: c9 leave
7e: c3 ret
Disassembly of section .rodata:
0000000000000000 <.rodata>:
0: 1f (bad)
1: 85 eb test %ebp,%ebx
3: 51 push %rcx
4: b8 .byte 0xb8
5: 1e (bad)
6: 09 .byte 0x9
7: 40 rex
Disassembly of section .comment:
0000000000000000 <.comment>:
0: 00 47 43 add %al,0x43(%rdi)
3: 43 3a 20 rex.XB cmp (%r8),%spl
6: 28 44 65 62 sub %al,0x62(%rbp,%riz,2)
a: 69 61 6e 20 31 32 2e imul $0x2e323120,0x6e(%rcx),%esp
11: 32 2e xor (%rsi),%ch
13: 30 2d 31 34 29 20 xor %ch,0x20293431(%rip) # 2029344a <main+0x202933fc>
19: 31 32 xor %esi,(%rdx)
1b: 2e 32 2e cs xor (%rsi),%ch
1e: 30 00 xor %al,(%rax)
Disassembly of section .eh_frame:
0000000000000000 <.eh_frame>:
0: 14 00 adc $0x0,%al
2: 00 00 add %al,(%rax)
4: 00 00 add %al,(%rax)
6: 00 00 add %al,(%rax)
8: 01 7a 52 add %edi,0x52(%rdx)
b: 00 01 add %al,(%rcx)
d: 78 10 js 1f <.eh_frame+0x1f>
f: 01 1b add %ebx,(%rbx)
11: 0c 07 or $0x7,%al
13: 08 90 01 00 00 1c or %dl,0x1c000001(%rax)
19: 00 00 add %al,(%rax)
1b: 00 1c 00 add %bl,(%rax,%rax,1)
1e: 00 00 add %al,(%rax)
20: 00 00 add %al,(%rax)
22: 00 00 add %al,(%rax)
24: 21 00 and %eax,(%rax)
26: 00 00 add %al,(%rax)
28: 00 41 0e add %al,0xe(%rcx)
2b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
31: 5c pop %rsp
32: 0c 07 or $0x7,%al
34: 08 00 or %al,(%rax)
36: 00 00 add %al,(%rax)
38: 1c 00 sbb $0x0,%al
3a: 00 00 add %al,(%rax)
3c: 3c 00 cmp $0x0,%al
3e: 00 00 add %al,(%rax)
40: 00 00 add %al,(%rax)
42: 00 00 add %al,(%rax)
44: 2d 00 00 00 00 sub $0x0,%eax
49: 41 0e rex.B (bad)
4b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
51: 68 0c 07 08 00 push $0x8070c
56: 00 00 add %al,(%rax)
58: 1c 00 sbb $0x0,%al
5a: 00 00 add %al,(%rax)
5c: 5c pop %rsp
5d: 00 00 add %al,(%rax)
5f: 00 00 add %al,(%rax)
61: 00 00 add %al,(%rax)
63: 00 31 add %dh,(%rcx)
65: 00 00 add %al,(%rax)
67: 00 00 add %al,(%rax)
69: 41 0e rex.B (bad)
6b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
71: 6c insb (%dx),%es:(%rdi)
72: 0c 07 or $0x7,%al
74: 08 00 or %al,(%rax)
...

View File

@@ -0,0 +1,827 @@
exetest: file format elf64-x86-64
Disassembly of section .interp:
0000000000000318 <.interp>:
318: 2f (bad)
319: 6c insb (%dx),%es:(%rdi)
31a: 69 62 36 34 2f 6c 64 imul $0x646c2f34,0x36(%rdx),%esp
321: 2d 6c 69 6e 75 sub $0x756e696c,%eax
326: 78 2d js 355 <__abi_tag-0x27>
328: 78 38 js 362 <__abi_tag-0x1a>
32a: 36 2d 36 34 2e 73 ss sub $0x732e3436,%eax
330: 6f outsl %ds:(%rsi),(%dx)
331: 2e 32 00 cs xor (%rax),%al
Disassembly of section .note.gnu.property:
0000000000000338 <.note.gnu.property>:
338: 04 00 add $0x0,%al
33a: 00 00 add %al,(%rax)
33c: 10 00 adc %al,(%rax)
33e: 00 00 add %al,(%rax)
340: 05 00 00 00 47 add $0x47000000,%eax
345: 4e 55 rex.WRX push %rbp
347: 00 02 add %al,(%rdx)
349: 80 00 c0 addb $0xc0,(%rax)
34c: 04 00 add $0x0,%al
34e: 00 00 add %al,(%rax)
350: 01 00 add %eax,(%rax)
352: 00 00 add %al,(%rax)
354: 00 00 add %al,(%rax)
...
Disassembly of section .note.gnu.build-id:
0000000000000358 <.note.gnu.build-id>:
358: 04 00 add $0x0,%al
35a: 00 00 add %al,(%rax)
35c: 14 00 adc $0x0,%al
35e: 00 00 add %al,(%rax)
360: 03 00 add (%rax),%eax
362: 00 00 add %al,(%rax)
364: 47 rex.RXB
365: 4e 55 rex.WRX push %rbp
367: 00 ac f8 0a 3d b1 d8 add %ch,-0x274ec2f6(%rax,%rdi,8)
36e: 08 42 52 or %al,0x52(%rdx)
371: 9d popf
372: 2d 0a af 6e 8b sub $0x8b6eaf0a,%eax
377: 93 xchg %eax,%ebx
378: aa stos %al,%es:(%rdi)
379: e2 fd loop 378 <__abi_tag-0x4>
37b: c2 .byte 0xc2
Disassembly of section .note.ABI-tag:
000000000000037c <__abi_tag>:
37c: 04 00 add $0x0,%al
37e: 00 00 add %al,(%rax)
380: 10 00 adc %al,(%rax)
382: 00 00 add %al,(%rax)
384: 01 00 add %eax,(%rax)
386: 00 00 add %al,(%rax)
388: 47 rex.RXB
389: 4e 55 rex.WRX push %rbp
38b: 00 00 add %al,(%rax)
38d: 00 00 add %al,(%rax)
38f: 00 03 add %al,(%rbx)
391: 00 00 add %al,(%rax)
393: 00 02 add %al,(%rdx)
395: 00 00 add %al,(%rax)
397: 00 00 add %al,(%rax)
399: 00 00 add %al,(%rax)
...
Disassembly of section .gnu.hash:
00000000000003a0 <.gnu.hash>:
3a0: 02 00 add (%rax),%al
3a2: 00 00 add %al,(%rax)
3a4: 05 00 00 00 01 add $0x1000000,%eax
3a9: 00 00 add %al,(%rax)
3ab: 00 06 add %al,(%rsi)
3ad: 00 00 add %al,(%rax)
3af: 00 00 add %al,(%rax)
3b1: 00 81 00 00 00 00 add %al,0x0(%rcx)
3b7: 00 05 00 00 00 00 add %al,0x0(%rip) # 3bd <__abi_tag+0x41>
3bd: 00 00 add %al,(%rax)
3bf: 00 d1 add %dl,%cl
3c1: 65 ce gs (bad)
3c3: 6d insl (%dx),%es:(%rdi)
Disassembly of section .dynsym:
00000000000003c8 <.dynsym>:
...
3e0: 01 00 add %eax,(%rax)
3e2: 00 00 add %al,(%rax)
3e4: 12 00 adc (%rax),%al
...
3f6: 00 00 add %al,(%rax)
3f8: 43 00 00 rex.XB add %al,(%r8)
3fb: 00 20 add %ah,(%rax)
...
40d: 00 00 add %al,(%rax)
40f: 00 5f 00 add %bl,0x0(%rdi)
412: 00 00 add %al,(%rax)
414: 20 00 and %al,(%rax)
...
426: 00 00 add %al,(%rax)
428: 6e outsb %ds:(%rsi),(%dx)
429: 00 00 add %al,(%rax)
42b: 00 20 add %ah,(%rax)
...
43d: 00 00 add %al,(%rax)
43f: 00 13 add %dl,(%rbx)
441: 00 00 add %al,(%rax)
443: 00 22 add %ah,(%rdx)
...
Disassembly of section .dynstr:
0000000000000458 <.dynstr>:
458: 00 5f 5f add %bl,0x5f(%rdi)
45b: 6c insb (%dx),%es:(%rdi)
45c: 69 62 63 5f 73 74 61 imul $0x6174735f,0x63(%rdx),%esp
463: 72 74 jb 4d9 <__abi_tag+0x15d>
465: 5f pop %rdi
466: 6d insl (%dx),%es:(%rdi)
467: 61 (bad)
468: 69 6e 00 5f 5f 63 78 imul $0x78635f5f,0x0(%rsi),%ebp
46f: 61 (bad)
470: 5f pop %rdi
471: 66 69 6e 61 6c 69 imul $0x696c,0x61(%rsi),%bp
477: 7a 65 jp 4de <__abi_tag+0x162>
479: 00 6c 69 62 add %ch,0x62(%rcx,%rbp,2)
47d: 63 2e movsxd (%rsi),%ebp
47f: 73 6f jae 4f0 <__abi_tag+0x174>
481: 2e 36 00 47 4c cs ss add %al,0x4c(%rdi)
486: 49 rex.WB
487: 42 rex.X
488: 43 5f rex.XB pop %r15
48a: 32 2e xor (%rsi),%ch
48c: 32 2e xor (%rsi),%ch
48e: 35 00 47 4c 49 xor $0x494c4700,%eax
493: 42 rex.X
494: 43 5f rex.XB pop %r15
496: 32 2e xor (%rsi),%ch
498: 33 34 00 xor (%rax,%rax,1),%esi
49b: 5f pop %rdi
49c: 49 54 rex.WB push %r12
49e: 4d 5f rex.WRB pop %r15
4a0: 64 65 72 65 fs gs jb 509 <__abi_tag+0x18d>
4a4: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi
4ab: 4d
4ac: 43 6c rex.XB insb (%dx),%es:(%rdi)
4ae: 6f outsl %ds:(%rsi),(%dx)
4af: 6e outsb %ds:(%rsi),(%dx)
4b0: 65 54 gs push %rsp
4b2: 61 (bad)
4b3: 62 (bad)
4b4: 6c insb (%dx),%es:(%rdi)
4b5: 65 00 5f 5f add %bl,%gs:0x5f(%rdi)
4b9: 67 6d insl (%dx),%es:(%edi)
4bb: 6f outsl %ds:(%rsi),(%dx)
4bc: 6e outsb %ds:(%rsi),(%dx)
4bd: 5f pop %rdi
4be: 73 74 jae 534 <__abi_tag+0x1b8>
4c0: 61 (bad)
4c1: 72 74 jb 537 <__abi_tag+0x1bb>
4c3: 5f pop %rdi
4c4: 5f pop %rdi
4c5: 00 5f 49 add %bl,0x49(%rdi)
4c8: 54 push %rsp
4c9: 4d 5f rex.WRB pop %r15
4cb: 72 65 jb 532 <__abi_tag+0x1b6>
4cd: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi
4d4: 4d
4d5: 43 6c rex.XB insb (%dx),%es:(%rdi)
4d7: 6f outsl %ds:(%rsi),(%dx)
4d8: 6e outsb %ds:(%rsi),(%dx)
4d9: 65 54 gs push %rsp
4db: 61 (bad)
4dc: 62 .byte 0x62
4dd: 6c insb (%dx),%es:(%rdi)
4de: 65 gs
...
Disassembly of section .gnu.version:
00000000000004e0 <.gnu.version>:
4e0: 00 00 add %al,(%rax)
4e2: 02 00 add (%rax),%al
4e4: 01 00 add %eax,(%rax)
4e6: 01 00 add %eax,(%rax)
4e8: 01 00 add %eax,(%rax)
4ea: 03 00 add (%rax),%eax
Disassembly of section .gnu.version_r:
00000000000004f0 <.gnu.version_r>:
4f0: 01 00 add %eax,(%rax)
4f2: 02 00 add (%rax),%al
4f4: 22 00 and (%rax),%al
4f6: 00 00 add %al,(%rax)
4f8: 10 00 adc %al,(%rax)
4fa: 00 00 add %al,(%rax)
4fc: 00 00 add %al,(%rax)
4fe: 00 00 add %al,(%rax)
500: 75 1a jne 51c <__abi_tag+0x1a0>
502: 69 09 00 00 03 00 imul $0x30000,(%rcx),%ecx
508: 2c 00 sub $0x0,%al
50a: 00 00 add %al,(%rax)
50c: 10 00 adc %al,(%rax)
50e: 00 00 add %al,(%rax)
510: b4 91 mov $0x91,%ah
512: 96 xchg %eax,%esi
513: 06 (bad)
514: 00 00 add %al,(%rax)
516: 02 00 add (%rax),%al
518: 38 00 cmp %al,(%rax)
51a: 00 00 add %al,(%rax)
51c: 00 00 add %al,(%rax)
...
Disassembly of section .rela.dyn:
0000000000000520 <.rela.dyn>:
520: 00 3e add %bh,(%rsi)
522: 00 00 add %al,(%rax)
524: 00 00 add %al,(%rax)
526: 00 00 add %al,(%rax)
528: 08 00 or %al,(%rax)
52a: 00 00 add %al,(%rax)
52c: 00 00 add %al,(%rax)
52e: 00 00 add %al,(%rax)
530: 20 11 and %dl,(%rcx)
532: 00 00 add %al,(%rax)
534: 00 00 add %al,(%rax)
536: 00 00 add %al,(%rax)
538: 08 3e or %bh,(%rsi)
53a: 00 00 add %al,(%rax)
53c: 00 00 add %al,(%rax)
53e: 00 00 add %al,(%rax)
540: 08 00 or %al,(%rax)
542: 00 00 add %al,(%rax)
544: 00 00 add %al,(%rax)
546: 00 00 add %al,(%rax)
548: e0 10 loopne 55a <__abi_tag+0x1de>
54a: 00 00 add %al,(%rax)
54c: 00 00 add %al,(%rax)
54e: 00 00 add %al,(%rax)
550: 08 40 00 or %al,0x0(%rax)
553: 00 00 add %al,(%rax)
555: 00 00 add %al,(%rax)
557: 00 08 add %cl,(%rax)
559: 00 00 add %al,(%rax)
55b: 00 00 add %al,(%rax)
55d: 00 00 add %al,(%rax)
55f: 00 08 add %cl,(%rax)
561: 40 00 00 rex add %al,(%rax)
564: 00 00 add %al,(%rax)
566: 00 00 add %al,(%rax)
568: c0 3f 00 sarb $0x0,(%rdi)
56b: 00 00 add %al,(%rax)
56d: 00 00 add %al,(%rax)
56f: 00 06 add %al,(%rsi)
571: 00 00 add %al,(%rax)
573: 00 01 add %al,(%rcx)
...
57d: 00 00 add %al,(%rax)
57f: 00 c8 add %cl,%al
581: 3f (bad)
582: 00 00 add %al,(%rax)
584: 00 00 add %al,(%rax)
586: 00 00 add %al,(%rax)
588: 06 (bad)
589: 00 00 add %al,(%rax)
58b: 00 02 add %al,(%rdx)
...
595: 00 00 add %al,(%rax)
597: 00 d0 add %dl,%al
599: 3f (bad)
59a: 00 00 add %al,(%rax)
59c: 00 00 add %al,(%rax)
59e: 00 00 add %al,(%rax)
5a0: 06 (bad)
5a1: 00 00 add %al,(%rax)
5a3: 00 03 add %al,(%rbx)
...
5ad: 00 00 add %al,(%rax)
5af: 00 d8 add %bl,%al
5b1: 3f (bad)
5b2: 00 00 add %al,(%rax)
5b4: 00 00 add %al,(%rax)
5b6: 00 00 add %al,(%rax)
5b8: 06 (bad)
5b9: 00 00 add %al,(%rax)
5bb: 00 04 00 add %al,(%rax,%rax,1)
...
5c6: 00 00 add %al,(%rax)
5c8: e0 3f loopne 609 <__abi_tag+0x28d>
5ca: 00 00 add %al,(%rax)
5cc: 00 00 add %al,(%rax)
5ce: 00 00 add %al,(%rax)
5d0: 06 (bad)
5d1: 00 00 add %al,(%rax)
5d3: 00 05 00 00 00 00 add %al,0x0(%rip) # 5d9 <__abi_tag+0x25d>
5d9: 00 00 add %al,(%rax)
5db: 00 00 add %al,(%rax)
5dd: 00 00 add %al,(%rax)
...
Disassembly of section .init:
0000000000001000 <_init>:
1000: 48 83 ec 08 sub $0x8,%rsp
1004: 48 8b 05 c5 2f 00 00 mov 0x2fc5(%rip),%rax # 3fd0 <__gmon_start__@Base>
100b: 48 85 c0 test %rax,%rax
100e: 74 02 je 1012 <_init+0x12>
1010: ff d0 call *%rax
1012: 48 83 c4 08 add $0x8,%rsp
1016: c3 ret
Disassembly of section .plt:
0000000000001020 <.plt>:
1020: ff 35 ca 2f 00 00 push 0x2fca(%rip) # 3ff0 <_GLOBAL_OFFSET_TABLE_+0x8>
1026: ff 25 cc 2f 00 00 jmp *0x2fcc(%rip) # 3ff8 <_GLOBAL_OFFSET_TABLE_+0x10>
102c: 0f 1f 40 00 nopl 0x0(%rax)
Disassembly of section .plt.got:
0000000000001030 <__cxa_finalize@plt>:
1030: ff 25 aa 2f 00 00 jmp *0x2faa(%rip) # 3fe0 <__cxa_finalize@GLIBC_2.2.5>
1036: 66 90 xchg %ax,%ax
Disassembly of section .text:
0000000000001040 <_start>:
1040: 31 ed xor %ebp,%ebp
1042: 49 89 d1 mov %rdx,%r9
1045: 5e pop %rsi
1046: 48 89 e2 mov %rsp,%rdx
1049: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
104d: 50 push %rax
104e: 54 push %rsp
104f: 45 31 c0 xor %r8d,%r8d
1052: 31 c9 xor %ecx,%ecx
1054: 48 8d 3d 1c 01 00 00 lea 0x11c(%rip),%rdi # 1177 <main>
105b: ff 15 5f 2f 00 00 call *0x2f5f(%rip) # 3fc0 <__libc_start_main@GLIBC_2.34>
1061: f4 hlt
1062: 66 2e 0f 1f 84 00 00 cs nopw 0x0(%rax,%rax,1)
1069: 00 00 00
106c: 0f 1f 40 00 nopl 0x0(%rax)
0000000000001070 <deregister_tm_clones>:
1070: 48 8d 3d 99 2f 00 00 lea 0x2f99(%rip),%rdi # 4010 <__TMC_END__>
1077: 48 8d 05 92 2f 00 00 lea 0x2f92(%rip),%rax # 4010 <__TMC_END__>
107e: 48 39 f8 cmp %rdi,%rax
1081: 74 15 je 1098 <deregister_tm_clones+0x28>
1083: 48 8b 05 3e 2f 00 00 mov 0x2f3e(%rip),%rax # 3fc8 <_ITM_deregisterTMCloneTable@Base>
108a: 48 85 c0 test %rax,%rax
108d: 74 09 je 1098 <deregister_tm_clones+0x28>
108f: ff e0 jmp *%rax
1091: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
1098: c3 ret
1099: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000000010a0 <register_tm_clones>:
10a0: 48 8d 3d 69 2f 00 00 lea 0x2f69(%rip),%rdi # 4010 <__TMC_END__>
10a7: 48 8d 35 62 2f 00 00 lea 0x2f62(%rip),%rsi # 4010 <__TMC_END__>
10ae: 48 29 fe sub %rdi,%rsi
10b1: 48 89 f0 mov %rsi,%rax
10b4: 48 c1 ee 3f shr $0x3f,%rsi
10b8: 48 c1 f8 03 sar $0x3,%rax
10bc: 48 01 c6 add %rax,%rsi
10bf: 48 d1 fe sar %rsi
10c2: 74 14 je 10d8 <register_tm_clones+0x38>
10c4: 48 8b 05 0d 2f 00 00 mov 0x2f0d(%rip),%rax # 3fd8 <_ITM_registerTMCloneTable@Base>
10cb: 48 85 c0 test %rax,%rax
10ce: 74 08 je 10d8 <register_tm_clones+0x38>
10d0: ff e0 jmp *%rax
10d2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
10d8: c3 ret
10d9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
00000000000010e0 <__do_global_dtors_aux>:
10e0: f3 0f 1e fa endbr64
10e4: 80 3d 25 2f 00 00 00 cmpb $0x0,0x2f25(%rip) # 4010 <__TMC_END__>
10eb: 75 2b jne 1118 <__do_global_dtors_aux+0x38>
10ed: 55 push %rbp
10ee: 48 83 3d ea 2e 00 00 cmpq $0x0,0x2eea(%rip) # 3fe0 <__cxa_finalize@GLIBC_2.2.5>
10f5: 00
10f6: 48 89 e5 mov %rsp,%rbp
10f9: 74 0c je 1107 <__do_global_dtors_aux+0x27>
10fb: 48 8b 3d 06 2f 00 00 mov 0x2f06(%rip),%rdi # 4008 <__dso_handle>
1102: e8 29 ff ff ff call 1030 <__cxa_finalize@plt>
1107: e8 64 ff ff ff call 1070 <deregister_tm_clones>
110c: c6 05 fd 2e 00 00 01 movb $0x1,0x2efd(%rip) # 4010 <__TMC_END__>
1113: 5d pop %rbp
1114: c3 ret
1115: 0f 1f 00 nopl (%rax)
1118: c3 ret
1119: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
0000000000001120 <frame_dummy>:
1120: f3 0f 1e fa endbr64
1124: e9 77 ff ff ff jmp 10a0 <register_tm_clones>
0000000000001129 <compute_square>:
1129: 55 push %rbp
112a: 48 89 e5 mov %rsp,%rbp
112d: 89 7d fc mov %edi,-0x4(%rbp)
1130: 8b 45 fc mov -0x4(%rbp),%eax
1133: 0f af c0 imul %eax,%eax
1136: 66 0f ef c0 pxor %xmm0,%xmm0
113a: f2 0f 2a c0 cvtsi2sd %eax,%xmm0
113e: 66 48 0f 7e c0 movq %xmm0,%rax
1143: 66 48 0f 6e c0 movq %rax,%xmm0
1148: 5d pop %rbp
1149: c3 ret
000000000000114a <compute_circle_area>:
114a: 55 push %rbp
114b: 48 89 e5 mov %rsp,%rbp
114e: 48 83 ec 08 sub $0x8,%rsp
1152: 89 7d fc mov %edi,-0x4(%rbp)
1155: 8b 45 fc mov -0x4(%rbp),%eax
1158: 89 c7 mov %eax,%edi
115a: e8 ca ff ff ff call 1129 <compute_square>
115f: f2 0f 10 0d a1 0e 00 movsd 0xea1(%rip),%xmm1 # 2008 <_IO_stdin_used+0x8>
1166: 00
1167: f2 0f 59 c1 mulsd %xmm1,%xmm0
116b: 66 48 0f 7e c0 movq %xmm0,%rax
1170: 66 48 0f 6e c0 movq %rax,%xmm0
1175: c9 leave
1176: c3 ret
0000000000001177 <main>:
1177: 55 push %rbp
1178: 48 89 e5 mov %rsp,%rbp
117b: 48 83 ec 20 sub $0x20,%rsp
117f: 89 7d ec mov %edi,-0x14(%rbp)
1182: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1186: c7 45 fc 0a 00 00 00 movl $0xa,-0x4(%rbp)
118d: 8b 45 fc mov -0x4(%rbp),%eax
1190: 89 c7 mov %eax,%edi
1192: e8 b3 ff ff ff call 114a <compute_circle_area>
1197: bf 64 00 00 00 mov $0x64,%edi
119c: e8 a9 ff ff ff call 114a <compute_circle_area>
11a1: b8 00 00 00 00 mov $0x0,%eax
11a6: c9 leave
11a7: c3 ret
Disassembly of section .fini:
00000000000011a8 <_fini>:
11a8: 48 83 ec 08 sub $0x8,%rsp
11ac: 48 83 c4 08 add $0x8,%rsp
11b0: c3 ret
Disassembly of section .rodata:
0000000000002000 <_IO_stdin_used>:
2000: 01 00 add %eax,(%rax)
2002: 02 00 add (%rax),%al
2004: 00 00 add %al,(%rax)
2006: 00 00 add %al,(%rax)
2008: 1f (bad)
2009: 85 eb test %ebp,%ebx
200b: 51 push %rcx
200c: b8 .byte 0xb8
200d: 1e (bad)
200e: 09 .byte 0x9
200f: 40 rex
Disassembly of section .eh_frame_hdr:
0000000000002010 <__GNU_EH_FRAME_HDR>:
2010: 01 1b add %ebx,(%rbx)
2012: 03 3b add (%rbx),%edi
2014: 3c 00 cmp $0x0,%al
2016: 00 00 add %al,(%rax)
2018: 06 (bad)
2019: 00 00 add %al,(%rax)
201b: 00 10 add %dl,(%rax)
201d: f0 ff lock (bad)
201f: ff 88 00 00 00 20 decl 0x20000000(%rax)
2025: f0 ff lock (bad)
2027: ff b0 00 00 00 30 push 0x30000000(%rax)
202d: f0 ff lock (bad)
202f: ff 58 00 lcall *0x0(%rax)
2032: 00 00 add %al,(%rax)
2034: 19 f1 sbb %esi,%ecx
2036: ff (bad)
2037: ff c8 dec %eax
2039: 00 00 add %al,(%rax)
203b: 00 3a add %bh,(%rdx)
203d: f1 int1
203e: ff (bad)
203f: ff (bad)
2040: e8 00 00 00 67 call 67002045 <_end+0x66ffe02d>
2045: f1 int1
2046: ff (bad)
2047: ff 08 decl (%rax)
2049: 01 00 add %eax,(%rax)
...
Disassembly of section .eh_frame:
0000000000002050 <__FRAME_END__-0xe8>:
2050: 14 00 adc $0x0,%al
2052: 00 00 add %al,(%rax)
2054: 00 00 add %al,(%rax)
2056: 00 00 add %al,(%rax)
2058: 01 7a 52 add %edi,0x52(%rdx)
205b: 00 01 add %al,(%rcx)
205d: 78 10 js 206f <__GNU_EH_FRAME_HDR+0x5f>
205f: 01 1b add %ebx,(%rbx)
2061: 0c 07 or $0x7,%al
2063: 08 90 01 07 10 14 or %dl,0x14100701(%rax)
2069: 00 00 add %al,(%rax)
206b: 00 1c 00 add %bl,(%rax,%rax,1)
206e: 00 00 add %al,(%rax)
2070: d0 ef shr %bh
2072: ff (bad)
2073: ff 22 jmp *(%rdx)
...
207d: 00 00 add %al,(%rax)
207f: 00 14 00 add %dl,(%rax,%rax,1)
2082: 00 00 add %al,(%rax)
2084: 00 00 add %al,(%rax)
2086: 00 00 add %al,(%rax)
2088: 01 7a 52 add %edi,0x52(%rdx)
208b: 00 01 add %al,(%rcx)
208d: 78 10 js 209f <__GNU_EH_FRAME_HDR+0x8f>
208f: 01 1b add %ebx,(%rbx)
2091: 0c 07 or $0x7,%al
2093: 08 90 01 00 00 24 or %dl,0x24000001(%rax)
2099: 00 00 add %al,(%rax)
209b: 00 1c 00 add %bl,(%rax,%rax,1)
209e: 00 00 add %al,(%rax)
20a0: 80 ef ff sub $0xff,%bh
20a3: ff 10 call *(%rax)
20a5: 00 00 add %al,(%rax)
20a7: 00 00 add %al,(%rax)
20a9: 0e (bad)
20aa: 10 46 0e adc %al,0xe(%rsi)
20ad: 18 4a 0f sbb %cl,0xf(%rdx)
20b0: 0b 77 08 or 0x8(%rdi),%esi
20b3: 80 00 3f addb $0x3f,(%rax)
20b6: 1a 3b sbb (%rbx),%bh
20b8: 2a 33 sub (%rbx),%dh
20ba: 24 22 and $0x22,%al
20bc: 00 00 add %al,(%rax)
20be: 00 00 add %al,(%rax)
20c0: 14 00 adc $0x0,%al
20c2: 00 00 add %al,(%rax)
20c4: 44 00 00 add %r8b,(%rax)
20c7: 00 68 ef add %ch,-0x11(%rax)
20ca: ff (bad)
20cb: ff 08 decl (%rax)
...
20d5: 00 00 add %al,(%rax)
20d7: 00 1c 00 add %bl,(%rax,%rax,1)
20da: 00 00 add %al,(%rax)
20dc: 5c pop %rsp
20dd: 00 00 add %al,(%rax)
20df: 00 49 f0 add %cl,-0x10(%rcx)
20e2: ff (bad)
20e3: ff 21 jmp *(%rcx)
20e5: 00 00 add %al,(%rax)
20e7: 00 00 add %al,(%rax)
20e9: 41 0e rex.B (bad)
20eb: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
20f1: 5c pop %rsp
20f2: 0c 07 or $0x7,%al
20f4: 08 00 or %al,(%rax)
20f6: 00 00 add %al,(%rax)
20f8: 1c 00 sbb $0x0,%al
20fa: 00 00 add %al,(%rax)
20fc: 7c 00 jl 20fe <__GNU_EH_FRAME_HDR+0xee>
20fe: 00 00 add %al,(%rax)
2100: 4a rex.WX
2101: f0 ff lock (bad)
2103: ff 2d 00 00 00 00 ljmp *0x0(%rip) # 2109 <__GNU_EH_FRAME_HDR+0xf9>
2109: 41 0e rex.B (bad)
210b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
2111: 68 0c 07 08 00 push $0x8070c
2116: 00 00 add %al,(%rax)
2118: 1c 00 sbb $0x0,%al
211a: 00 00 add %al,(%rax)
211c: 9c pushf
211d: 00 00 add %al,(%rax)
211f: 00 57 f0 add %dl,-0x10(%rdi)
2122: ff (bad)
2123: ff 31 push (%rcx)
2125: 00 00 add %al,(%rax)
2127: 00 00 add %al,(%rax)
2129: 41 0e rex.B (bad)
212b: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)
2131: 6c insb (%dx),%es:(%rdi)
2132: 0c 07 or $0x7,%al
2134: 08 00 or %al,(%rax)
...
0000000000002138 <__FRAME_END__>:
2138: 00 00 add %al,(%rax)
...
Disassembly of section .init_array:
0000000000003e00 <__frame_dummy_init_array_entry>:
3e00: 20 11 and %dl,(%rcx)
3e02: 00 00 add %al,(%rax)
3e04: 00 00 add %al,(%rax)
...
Disassembly of section .fini_array:
0000000000003e08 <__do_global_dtors_aux_fini_array_entry>:
3e08: e0 10 loopne 3e1a <_DYNAMIC+0xa>
3e0a: 00 00 add %al,(%rax)
3e0c: 00 00 add %al,(%rax)
...
Disassembly of section .dynamic:
0000000000003e10 <_DYNAMIC>:
3e10: 01 00 add %eax,(%rax)
3e12: 00 00 add %al,(%rax)
3e14: 00 00 add %al,(%rax)
3e16: 00 00 add %al,(%rax)
3e18: 22 00 and (%rax),%al
3e1a: 00 00 add %al,(%rax)
3e1c: 00 00 add %al,(%rax)
3e1e: 00 00 add %al,(%rax)
3e20: 0c 00 or $0x0,%al
3e22: 00 00 add %al,(%rax)
3e24: 00 00 add %al,(%rax)
3e26: 00 00 add %al,(%rax)
3e28: 00 10 add %dl,(%rax)
3e2a: 00 00 add %al,(%rax)
3e2c: 00 00 add %al,(%rax)
3e2e: 00 00 add %al,(%rax)
3e30: 0d 00 00 00 00 or $0x0,%eax
3e35: 00 00 add %al,(%rax)
3e37: 00 a8 11 00 00 00 add %ch,0x11(%rax)
3e3d: 00 00 add %al,(%rax)
3e3f: 00 19 add %bl,(%rcx)
...
3e49: 3e 00 00 ds add %al,(%rax)
3e4c: 00 00 add %al,(%rax)
3e4e: 00 00 add %al,(%rax)
3e50: 1b 00 sbb (%rax),%eax
3e52: 00 00 add %al,(%rax)
3e54: 00 00 add %al,(%rax)
3e56: 00 00 add %al,(%rax)
3e58: 08 00 or %al,(%rax)
3e5a: 00 00 add %al,(%rax)
3e5c: 00 00 add %al,(%rax)
3e5e: 00 00 add %al,(%rax)
3e60: 1a 00 sbb (%rax),%al
3e62: 00 00 add %al,(%rax)
3e64: 00 00 add %al,(%rax)
3e66: 00 00 add %al,(%rax)
3e68: 08 3e or %bh,(%rsi)
3e6a: 00 00 add %al,(%rax)
3e6c: 00 00 add %al,(%rax)
3e6e: 00 00 add %al,(%rax)
3e70: 1c 00 sbb $0x0,%al
3e72: 00 00 add %al,(%rax)
3e74: 00 00 add %al,(%rax)
3e76: 00 00 add %al,(%rax)
3e78: 08 00 or %al,(%rax)
3e7a: 00 00 add %al,(%rax)
3e7c: 00 00 add %al,(%rax)
3e7e: 00 00 add %al,(%rax)
3e80: f5 cmc
3e81: fe (bad)
3e82: ff 6f 00 ljmp *0x0(%rdi)
3e85: 00 00 add %al,(%rax)
3e87: 00 a0 03 00 00 00 add %ah,0x3(%rax)
3e8d: 00 00 add %al,(%rax)
3e8f: 00 05 00 00 00 00 add %al,0x0(%rip) # 3e95 <_DYNAMIC+0x85>
3e95: 00 00 add %al,(%rax)
3e97: 00 58 04 add %bl,0x4(%rax)
3e9a: 00 00 add %al,(%rax)
3e9c: 00 00 add %al,(%rax)
3e9e: 00 00 add %al,(%rax)
3ea0: 06 (bad)
3ea1: 00 00 add %al,(%rax)
3ea3: 00 00 add %al,(%rax)
3ea5: 00 00 add %al,(%rax)
3ea7: 00 c8 add %cl,%al
3ea9: 03 00 add (%rax),%eax
3eab: 00 00 add %al,(%rax)
3ead: 00 00 add %al,(%rax)
3eaf: 00 0a add %cl,(%rdx)
3eb1: 00 00 add %al,(%rax)
3eb3: 00 00 add %al,(%rax)
3eb5: 00 00 add %al,(%rax)
3eb7: 00 88 00 00 00 00 add %cl,0x0(%rax)
3ebd: 00 00 add %al,(%rax)
3ebf: 00 0b add %cl,(%rbx)
3ec1: 00 00 add %al,(%rax)
3ec3: 00 00 add %al,(%rax)
3ec5: 00 00 add %al,(%rax)
3ec7: 00 18 add %bl,(%rax)
3ec9: 00 00 add %al,(%rax)
3ecb: 00 00 add %al,(%rax)
3ecd: 00 00 add %al,(%rax)
3ecf: 00 15 00 00 00 00 add %dl,0x0(%rip) # 3ed5 <_DYNAMIC+0xc5>
...
3edd: 00 00 add %al,(%rax)
3edf: 00 03 add %al,(%rbx)
3ee1: 00 00 add %al,(%rax)
3ee3: 00 00 add %al,(%rax)
3ee5: 00 00 add %al,(%rax)
3ee7: 00 e8 add %ch,%al
3ee9: 3f (bad)
3eea: 00 00 add %al,(%rax)
3eec: 00 00 add %al,(%rax)
3eee: 00 00 add %al,(%rax)
3ef0: 07 (bad)
3ef1: 00 00 add %al,(%rax)
3ef3: 00 00 add %al,(%rax)
3ef5: 00 00 add %al,(%rax)
3ef7: 00 20 add %ah,(%rax)
3ef9: 05 00 00 00 00 add $0x0,%eax
3efe: 00 00 add %al,(%rax)
3f00: 08 00 or %al,(%rax)
3f02: 00 00 add %al,(%rax)
3f04: 00 00 add %al,(%rax)
3f06: 00 00 add %al,(%rax)
3f08: c0 00 00 rolb $0x0,(%rax)
3f0b: 00 00 add %al,(%rax)
3f0d: 00 00 add %al,(%rax)
3f0f: 00 09 add %cl,(%rcx)
3f11: 00 00 add %al,(%rax)
3f13: 00 00 add %al,(%rax)
3f15: 00 00 add %al,(%rax)
3f17: 00 18 add %bl,(%rax)
3f19: 00 00 add %al,(%rax)
3f1b: 00 00 add %al,(%rax)
3f1d: 00 00 add %al,(%rax)
3f1f: 00 fb add %bh,%bl
3f21: ff (bad)
3f22: ff 6f 00 ljmp *0x0(%rdi)
3f25: 00 00 add %al,(%rax)
3f27: 00 00 add %al,(%rax)
3f29: 00 00 add %al,(%rax)
3f2b: 08 00 or %al,(%rax)
3f2d: 00 00 add %al,(%rax)
3f2f: 00 fe add %bh,%dh
3f31: ff (bad)
3f32: ff 6f 00 ljmp *0x0(%rdi)
3f35: 00 00 add %al,(%rax)
3f37: 00 f0 add %dh,%al
3f39: 04 00 add $0x0,%al
3f3b: 00 00 add %al,(%rax)
3f3d: 00 00 add %al,(%rax)
3f3f: 00 ff add %bh,%bh
3f41: ff (bad)
3f42: ff 6f 00 ljmp *0x0(%rdi)
3f45: 00 00 add %al,(%rax)
3f47: 00 01 add %al,(%rcx)
3f49: 00 00 add %al,(%rax)
3f4b: 00 00 add %al,(%rax)
3f4d: 00 00 add %al,(%rax)
3f4f: 00 f0 add %dh,%al
3f51: ff (bad)
3f52: ff 6f 00 ljmp *0x0(%rdi)
3f55: 00 00 add %al,(%rax)
3f57: 00 e0 add %ah,%al
3f59: 04 00 add $0x0,%al
3f5b: 00 00 add %al,(%rax)
3f5d: 00 00 add %al,(%rax)
3f5f: 00 f9 add %bh,%cl
3f61: ff (bad)
3f62: ff 6f 00 ljmp *0x0(%rdi)
3f65: 00 00 add %al,(%rax)
3f67: 00 03 add %al,(%rbx)
...
Disassembly of section .got:
0000000000003fc0 <.got>:
...
Disassembly of section .got.plt:
0000000000003fe8 <_GLOBAL_OFFSET_TABLE_>:
3fe8: 10 3e adc %bh,(%rsi)
...
Disassembly of section .data:
0000000000004000 <__data_start>:
...
0000000000004008 <__dso_handle>:
4008: 08 40 00 or %al,0x0(%rax)
400b: 00 00 add %al,(%rax)
400d: 00 00 add %al,(%rax)
...
Disassembly of section .bss:
0000000000004010 <completed.0>:
...
Disassembly of section .comment:
0000000000000000 <.comment>:
0: 47 rex.RXB
1: 43 rex.XB
2: 43 3a 20 rex.XB cmp (%r8),%spl
5: 28 44 65 62 sub %al,0x62(%rbp,%riz,2)
9: 69 61 6e 20 31 32 2e imul $0x2e323120,0x6e(%rcx),%esp
10: 32 2e xor (%rsi),%ch
12: 30 2d 31 34 29 20 xor %ch,0x20293431(%rip) # 20293449 <_end+0x2028f431>
18: 31 32 xor %esi,(%rdx)
1a: 2e 32 2e cs xor (%rsi),%ch
1d: 30 00 xor %al,(%rax)

View File

@@ -0,0 +1,43 @@
/*
* =====================================================================================
*
* Filename: test.c
*
* Description:
*
* Version: 1.0
* Created: 03/02/24 08:32:56 PM IST
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Organization:
*
* =====================================================================================
*/
#include "test.h"
#define SQUARE(x) (x*x)
#define DEFAULT_RADIUS 100
double
compute_square(int x){
return SQUARE(x);
}
double
compute_circle_area(int radius){
return PI * compute_square(radius);
}
int
main(int argc, char **argv){
int radius = 10;
compute_circle_area(radius);
compute_circle_area(DEFAULT_RADIUS);
return 0;
}

View File

@@ -0,0 +1,19 @@
/*
* =====================================================================================
*
* Filename: test.h
*
* Description:
*
* Version: 1.0
* Created: 03/02/24 08:36:25 PM IST
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Organization:
*
* =====================================================================================
*/
#define PI 3.14

Binary file not shown.

View File

@@ -0,0 +1,83 @@
.file "test1.c"
.text
.globl compute_square
.type compute_square, @function
compute_square:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl %edi, -4(%rbp)
movl -4(%rbp), %eax
imull %eax, %eax
pxor %xmm0, %xmm0
cvtsi2sdl %eax, %xmm0
movq %xmm0, %rax
movq %rax, %xmm0
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size compute_square, .-compute_square
.globl compute_circle_area
.type compute_circle_area, @function
compute_circle_area:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $8, %rsp
movl %edi, -4(%rbp)
movl -4(%rbp), %eax
movl %eax, %edi
call compute_square
movsd .LC0(%rip), %xmm1
mulsd %xmm1, %xmm0
movq %xmm0, %rax
movq %rax, %xmm0
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size compute_circle_area, .-compute_circle_area
.globl main
.type main, @function
main:
.LFB2:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movl %edi, -20(%rbp)
movq %rsi, -32(%rbp)
movl $10, -4(%rbp)
movl -4(%rbp), %eax
movl %eax, %edi
call compute_circle_area
movl $100, %edi
call compute_circle_area
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE2:
.size main, .-main
.section .rodata
.align 8
.LC0:
.long 1374389535
.long 1074339512
.ident "GCC: (Debian 12.2.0-14) 12.2.0"
.section .note.GNU-stack,"",@progbits

View File

@@ -0,0 +1,33 @@
# 0 "test.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "test.c"
# 19 "test.c"
# 1 "test.h" 1
# 20 "test.c" 2
double
compute_square(int x){
return (x*x);
}
double
compute_circle_area(int radius){
return 3.14 * compute_square(radius);
}
int
main(int argc, char **argv){
int radius = 10;
compute_circle_area(radius);
compute_circle_area(100);
return 0;
}