最最簡單的c語言函式彙編分析

2022-02-23 18:21:31 字數 1014 閱讀 8678

xp+vc6.0

int plus(int x, int y)

以下是vc6.0的反彙編視窗

1:    int plus(int x, int y)

2:

0040103a pop edi

0040103b pop esi

0040103c pop ebx

0040103d mov esp,ebp

0040103f pop ebp

00401040 ret

push      ebp

mov ebp,esp

sub esp,40h

//提公升棧,為函式騰出空間,為ebp定址做準備

push ebx

push esi

push edi

//暫存器壓棧,儲存現場

lea edi,[ebp-40h]

//將ebp-40h(esp)的具體記憶體位址存到edi

mov ecx,10h

//10(十六進製制)存入計數暫存器

mov eax,0xcccccccc

//初始化eax

rep stos dword ptr [edi]

//用eax中的值初始化到es:[edi]指向的位址,長度為dword,迴圈執行次數為eax中的值(恰好ebp->esp全部被初始化)

xor eax,eax

//eax清零

pop edi

pop esi

pop ebx

mov esp,ebp

pop ebp

ret//暫存器出棧,恢復現場,堆疊平衡並返回

簡單C語言程式的彙編分析1

源程式如下 include int main 通過vc 6.0 的反彙編檢視,如下 1 include 2 int main 3 0040102a popedi 彈出值,放入 edi暫存器中,esp 4 0040102bpopesi 彈出值,放入 esi暫存器中,esp 4 0040102c pop...

C 語言函式返回結構體彙編分析

為檢驗vc預設設定下結構的對齊情況,特定義結構如下 1 typedef struct ctest 2 ctest,pctest 9 getdata 函式返回上面定義的結構,由此可觀察 c 語言中返回結構時的細節 10 ctest getdata 11 0040104a 8be5 mov esp,eb...

組合語言呼叫C語言函式的簡單方法

組合語言呼叫c語言函式的簡單方法 首先我選擇了編譯器 vc masm來做這個實驗。建立乙個c檔案,寫下如下內容。int cadd int a,int b 用vc 將其編譯成obj檔案。然後建立乙個asm程式,把得到的obj檔案新增進來,寫下如下內容。386 model flat,stdcall op...