diff --git a/Four_stage_Compilation/exetest b/Four_stage_Compilation/exetest new file mode 100755 index 0000000..cbb33da Binary files /dev/null and b/Four_stage_Compilation/exetest differ diff --git a/Four_stage_Compilation/temp b/Four_stage_Compilation/temp new file mode 100644 index 0000000..9fae971 --- /dev/null +++ b/Four_stage_Compilation/temp @@ -0,0 +1,127 @@ + +test.o: file format elf64-x86-64 + + +Disassembly of section .text: + +0000000000000000 : + 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 : + 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 + 36: f2 0f 10 0d 00 00 00 movsd 0x0(%rip),%xmm1 # 3e + 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
: + 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 + 6e: bf 64 00 00 00 mov $0x64,%edi + 73: e8 00 00 00 00 call 78 + 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 + 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) + ... diff --git a/Four_stage_Compilation/temp1 b/Four_stage_Compilation/temp1 new file mode 100644 index 0000000..9511fb7 --- /dev/null +++ b/Four_stage_Compilation/temp1 @@ -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
+ 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 : + 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 + 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 + 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 : + 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 + 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 + 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 + 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 : + 1120: f3 0f 1e fa endbr64 + 1124: e9 77 ff ff ff jmp 10a0 + +0000000000001129 : + 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 : + 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 + 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
: + 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 + 1197: bf 64 00 00 00 mov $0x64,%edi + 119c: e8 a9 ff ff ff call 114a + 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 : + ... + +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) diff --git a/Four_stage_Compilation/test.c b/Four_stage_Compilation/test.c new file mode 100644 index 0000000..4943e82 --- /dev/null +++ b/Four_stage_Compilation/test.c @@ -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; +} diff --git a/Four_stage_Compilation/test.h b/Four_stage_Compilation/test.h new file mode 100644 index 0000000..e26f1bd --- /dev/null +++ b/Four_stage_Compilation/test.h @@ -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 diff --git a/Four_stage_Compilation/test.o b/Four_stage_Compilation/test.o new file mode 100644 index 0000000..020f505 Binary files /dev/null and b/Four_stage_Compilation/test.o differ diff --git a/Four_stage_Compilation/test.s b/Four_stage_Compilation/test.s new file mode 100644 index 0000000..6ac1ec5 --- /dev/null +++ b/Four_stage_Compilation/test.s @@ -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 diff --git a/Four_stage_Compilation/test1.c b/Four_stage_Compilation/test1.c new file mode 100644 index 0000000..db36030 --- /dev/null +++ b/Four_stage_Compilation/test1.c @@ -0,0 +1,33 @@ +# 0 "test.c" +# 0 "" +# 0 "" +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 0 "" 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; +}