piratezgw 原創做品轉載請註明出處 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 code
其實寫這個就是爲了應付MOOC課程的做業,所在環境沒法隨時接觸互聯網,因此提交的都比較晚,廢話很少說,進入正題。
get
1、實驗的操做編譯
這方面主要是在Linux環境下使用vi + gcc 編寫C程序代碼,而後編譯成彙編代碼,以下圖所示
class
2、代碼分析gcc
因爲原彙編代碼的動態連接而且符號表沒有去除,因此去除它們,獲得純彙編代碼:互聯網
g: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax addl $2, %eax popl %ebp ret f: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax movl %eax, (%esp) call g leave ret main: pushl %ebp movl %esp, %ebp subl $4, %esp movl $9, (%esp) call f addl $1, %eax leave ret
如今從寄存器的角度進行分析,如圖:
gc