C語言反彙編

2021-08-14 08:35:07 字數 729 閱讀 5770

這裡使用的是keil4軟體,將編寫的c語言程式彙編成組合語言。

這裡只用最簡單的c語言做了一下參考,所舉的例子是最簡單的,只能用於了解一下彙編的表達方式。

如圖所示,條件判斷語句的彙編語句表達是賦值後與進行異或比較,再判斷是否進行跳轉。

將立即數03賦值給累加器a,然後將累加器a的值與立即數05進行異或(xrl是異或運算指令)之後賦值給a,相同的兩個數值進行異或運算會得到0的結果,之後判斷a的值是否為0,jnz是a不為零就跳轉到c:080f位址處,若a為零則執行下一條語句。

while(1)的實現方式十分簡單,只是一條無條件跳轉語句sjmp,執行到這一條語句就跳轉回c:080f,一遍遍執行while括號裡的指令,死迴圈,不跳出。

若不存在死迴圈,主函式main執行完一遍後回進行復位,將所有暫存器復位成00的初始狀態,特殊暫存器sp復位為0x07,之後跳轉程式開頭(c:0800)重複執main函式。

將學到的東西紀錄下來,既是對當天學習成果的總結,也是對自身的檢驗,看自己到底是只過了一遍腦,還是真得掌握了所學的知識。

switch反彙編 C語言

在分支較多的時候,switch的效率比if高,在反彙編中我們即可看到效率高的原因 include void main return 5 int x 5 00401028 mov dword ptr ebp 4 5 6 switch x 7 include void main return 5 int...

C語言反彙編入門例項

d my documents visual studio 2008 projects first first first.cpp first.cpp 定義控制台應用程式的入口點。include stdafx.h int tmain int argc,tchar argv 恢復暫存器ebx,esi,e...

利用反彙編手段解析C語言函式

利用反彙編手段解析c語言函式 通過在 visual c 6.0 下反彙編乙個 32 位 c語言程式的部分 來解析解釋函式呼叫的具體過程。函式呼叫過程 函式呼叫過程主要由引數傳遞 位址跳轉 區域性變數分配和賦初值 執行函式體,結果返回等幾個步驟組成。引數傳遞及函式跳轉 引數由實參傳遞給形參。在底層實現...