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...