- 6
- 0
- 约5.49千字
- 约 8页
- 2017-02-27 发布于湖北
- 举报
函数返回值int Count()
{
int i,j;
i=100;
j=200;
return i+j;
}
测试函数:
void Test()
{
int k=Count();
printf(\n k[%d]\n);
}
C/C++的函数返回值一般是放在寄存器eax里的,而不是在栈里。
你的这一句int k = Count()的汇编语句就是这样:
mov [esp - 4], eax //eax里是300,esp - 4是局部变量k的位置
你可以在vc里做个实验:
int add(int a, int b)
{
__asm {
mov eax,a // 把参数1存入eax
add eax,b // eax += 参数2, 结果在eax里
}
}
int main()
{
printf(%d\n, add(3, 4));
return 0;
}
楼主需要了解下寄存器这一概念,我就不把C/C++函数的汇编代码给发出来了。
还有在汇编层面来看,函数的返回值根本就没有定论,函数可以通过多种方式返回。保存返回值在eax里只是C/C++的一个约定而已。
返回值可以放在栈里,但你在C的语言层面上可能做不到,其实随着函数的结束,mov esp, ebp这条指令过后,函数内部的局部变量就报废了。如果你之后没改变过栈的内容,你可以
您可能关注的文档
- #1发变组空载特性试验.doc
- (1、2)文件设计.doc
- (6-1)第六章Authorware课件开发――交互课件开发.ppt
- (6-2)第六章Authorware课件开发――交互课件开发.ppt
- (2013.7更新)新文件夹标签.doc
- (FOSS朱雨杰)近红外饲料品质分析仪网络化技术及非法添加物快速筛查.ppt
- (NVIDIA)系列显卡双屏幕配置说明.doc
- (安装Office 2010专业版+密钥激活).doc
- (步步高人教版)2011高三政治一轮复习课件 :选修2 专题二 马克思主义经济学的伟大贡献(可编辑).ppt
- (层次原理图).doc
- 2026年净零观察指标白皮书.pdf
- 时尚中国2026:中国时尚消费发展报告.pdf
- 问题经济OPC一人公司的核心引擎2026.docx
- 个人无犯罪记录、重大失信记录承诺书.docx
- 脱密期保密承诺书.docx
- DB3310∕T 55-2023 基层社会治理 全科网格管理规范.docx
- DB34∕T 3079-2026 河道堤防减压井及测压管管理规程.docx
- DB44∕T 2871-2026 城镇液化石油气加臭技术标准.docx
- DB34∕T 2690-2026 道路运输车辆卫星定位系统 平台技术要求与测试规范.docx
- DB34∕T 5439-2026 危险货物道路运输企业专用停车场技术要求.docx
原创力文档

文档评论(0)