計算機是如何工作的———高級語言轉變為機器語言的過程(20135304 劉世鵬)


計算機是如何工作的———高級語言轉變為機器語言的過程


 

作者:20135304 劉世鵬

《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 ”

實驗過程

寫入c語言代碼

 

執行gcc -S -o main.s main.c -m32指令后得到匯編代碼

刪除以“.”開頭的附加項后得到純凈的匯編代碼

分析過程

得到純凈的匯編代碼之后對其工作過程進行分析

前幾步較為簡單,ebp和esp所指向數值的箭頭顏色與右邊代碼外框的顏色對應

值得強調的是在main函數執行到“call f”指令后,eip指向“f函數”,代碼的執行進入f函數,


在f函數中,eax計算器存儲“5304”這一數值

“call g ”指令將eip指向“g 函數”,開始執行g函數的指令。
在g函數中,eax修改5307為存儲值


pop %ebp指令將ebp指向4,esp上移一位

 

 

 


ret指令退出“g函數”,進入離開“f函數”的位置,esp上移一位


執行f函數的leave指令,將ebp的值賦值給esp,隨后將ebp的值指向1,隨后esp上移一位


退出f函數,執行離開main函數后的代碼,修改eax為5308


繼續執行leave和ret指令,使得esp和ebp最后恢復初始狀態。整個過程結束。

 

實驗體會

在上學習信息安全系統中的“緩沖區溢出”實驗中對匯編代碼的執行過程已有了初步了解,經過這學期的課程,讓我對以前感到模糊的概念有了清晰的認識,課程視頻時間雖然不長,但講解的很透徹,讓我們學會匯編代碼工作的核心思想。對計算機的工作原理有了更深的認識。可能是之前匯編學習不夠扎實,在視頻分析過程中沒能一次理解的知識點就反復看視頻理清思路,最終學有所得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM