c语言课设总结(c语言基础知识)

   日期:2022-02-25     文章发布:文章发布    网络转载:生活号    
核心提示:C语言第一课学习目标: 1.运行第一个C语言的程序 2.熟悉VC开发环境 3.C函数的格式 4.C函数的调用 5.函数的反汇编分析——空函数 6.函数的反汇编分析——简单功能 7.函数的反汇编分析——嵌套调用 运行第一个C语言的程序,熟悉VC开发环境 #include//头文件 intmain()//程序入口点 { printf("HelloWord!"); retu...
移动站源标题:http://mip.818114.com/news/item-180229.html

C语言第一课学习目标:

1. 运行第一个C语言的程序

2. 熟悉VC开发环境

3. C函数的格式

4. C函数的调用

5. 函数的反汇编分析——空函数

6. 函数的反汇编分析——简单功能

7. 函数的反汇编分析——嵌套调用

运行第一个C语言的程序,熟悉VC开发环境

#include <stdio.h> //头文件

int main() //程序入口点

{

printf(“Hello Word!”);

return 0;

}

C函数的格式

无参数、无返回值的函数格式

void 函数名()

{

//代码

}

有参数,无返回值的函数格式

void 函数名(参数类型 参数名,参数类型 参数名)

{

//代码

}

裸函数

void __declspec(naked) Function()

{

//此处可以无任何代码

}

如何在C语言里写汇编

void __declspec(naked) Function()

{

//通过汇编写一个函数实现任意两个数相加

__ASM

{

//提升堆栈

push ebp

mov ebp,esp

add esp,0x40

//保护现场

push ebx

push esi

push edi

//填充溢出缓冲区

mov ecx,0x10

mov eax,0xCCCCCCCC

lea edi,dword ptr ss:[ebp-0x40]

ret stos dword ptr es:[edi]

//实现功能

mov eax,dword ptr ss:[ebp+8]

add eax,dword ptr ss:[ebp+c]

//恢复现场

pop edi

pop esi

pop ebx

//恢复原始堆栈

mov esp,ebp

pop ebp

//返回调用Call的下一行

ret

//平衡堆栈(假设传了两个参数)

add esp,0x8

}

}

调用约定

调用约定参数压栈顺序平衡堆栈

__cdecl从右至左入栈调用者清理堆栈

__stdcall从右至左入栈自身清理堆栈

__fastcallECX/EDX传递前两个参数,剩下的参数从右至左入栈自身清理堆栈

观察下列三个函数在汇编中参数是如何入栈的

例1.

int __cdecl plus1(int x,int y)

{

return x+y;

}

例2.

int __stdcall plus1(int x,int y)

{

return x+y;

}

例3.

int __fastcall plus1(int x,int y,int l,int k)

{

return x+y+l+k;

}

免责声明:本网部分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性,如有侵权请通知我们删除!(留言删除
 
 
更多>同类行业

同类新闻
最新资讯
最新发布
最受欢迎
网站首页  |  黄页  |  联系方式  |  信息  |  版权隐私  |  网站地图  |  API推送  |  网站留言  |  RSS订阅  |  违规举报  |  陇ICP备22000095号