KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following c++ code int factorial(int n){ if(n==0){ return 1; } return n*factorial(n-1); } int main(void){ factorial(5); return 0; } When I create an assembly file using g++ -S factorial.cpp I get the following: .file "tail_call_opt.cpp" .text .globl _Z9factoriali .type _Z9factoriali, @function _Z9factoriali: .LFB0: .cfi_startproc .cfi_personality 0x0,__gxx_personality_v0 pushl %ebp .cfi_def_cfa_offset 8 movl %esp, %ebp .cfi_offset 5, -8 .cfi_def_cfa_register 5 subl $24, %esp cmpl $0, 8(%ebp) jne .L2 movl $1, %eax jmp .L3 .L2: movl 8(%ebp), %eax subl $1, %eax movl %eax, (%esp) call _Z9factoriali imull 8(%ebp), %eax .L3: leave ret .cfi_endproc .LFE0: .size _Z9factoriali, .-_Z9factoriali .globl main .type main, @function main: .LFB1: .cfi_startproc .cfi_personality 0x0,__gxx_personality_v0 pushl %ebp .cfi_def_cfa_offset 8 movl %esp, %ebp .cfi_offset 5, -8 .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp movl $5, (%esp) call _Z9factoriali movl $0, %eax leave ret .cfi_endproc .LFE1: .size main, .-main .ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3" .section .note.GNU-stack,"",@progbits I can follow most of this, but what is the purpose of the .cfi and the .LFE parts? Where can I learn more about the assembly produced by gcc?
Tags (comma-separated)
Save Edits
Cancel