1.0 C語言彙編表示

C語言的彙編形式框架

簡單的main函數以下函數

#include <stdio.h> 

//自定義函數
int plus(int x,int y){
	
	return 0;
}

int main(){
	
	__asm{
		
		mov eax,eax;
		mov eax,eax;
		mov eax,eax;
	}

	//調用函數
	plus(1,2);

	return 0;
}

其對應的彙編code

4:    int plus(int x,int y){
00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,40h //堆棧框架 ,提高棧深度40h(64D)字節
00401016   push        ebx
00401017   push        esi
00401018   push        edi  //保護寄存器 ebx esi edi
00401019   lea         edi,[ebp-40h]
0040101C   mov         ecx,10h
00401021   mov         eax,0CCCCCCCCh  
00401026   rep stos    dword ptr [edi] // 初始化40h字節的棧內容爲CC
5:
6:        return 0;
00401028   xor         eax,eax
7:    }
0040102A   pop         edi
0040102B   pop         esi
0040102C   pop         ebx  //恢復寄存器
0040102D   mov         esp,ebp //恢復esp
0040102F   pop         ebp  //恢復ebp
00401030   ret              //修改EIP





9:    int main(){
00410640   push        ebp
00410641   mov         ebp,esp
00410643   sub         esp,40h  //堆棧框架 ,提高棧深度40h(64D)字節
00410646   push        ebx
00410647   push        esi
00410648   push        edi     //保護寄存器 ebx esi edi
00410649   lea         edi,[ebp-40h]
0041064C   mov         ecx,10h
00410651   mov         eax,0CCCCCCCCh
00410656   rep stos    dword ptr [edi]   // 初始化40h字節的棧內容爲CC
10:
11:       __asm{
12:
13:           mov eax,eax;
00410658   mov         eax,eax
14:           mov eax,eax;
0041065A   mov         eax,eax
15:           mov eax,eax;
0041065C   mov         eax,eax
16:       }
17:
18:       //調用函數
19:       plus(1,2);
0041065E   push        2
00410660   push        1  //調用plus函數,遵循C調用約定,把參數按從右到左順序壓入棧,調用者負責堆棧平衡
00410662   call        @ILT+5(plus) (0040100a) //調用plus函數
00410667   add         esp,8  // 保存堆棧平衡 外平棧
20:
21:       return 0;
0041066A   xor         eax,eax
22:   }
0041066C   pop         edi 
0041066D   pop         esi
0041066E   pop         ebx  // 恢復寄存器 edi esi ebx
0041066F   add         esp,40h  //  堆棧平衡 內平棧
00410672   cmp         ebp,esp
00410674   call        __chkesp (00410680)
00410679   mov         esp,ebp
0041067B   pop         ebp   //恢復ebp
0041067C   ret               // 修改eip,返回到調用入口下一地址
相關文章
相關標籤/搜索