C语言综合研究与高强度程序设计训练 2
来源:互联网 发布:java 获取apk版本号 编辑:程序博客网 时间:2024/04/28 03:11
C语言综合研究与高强度程序设计训练 2
编写程序
int a;
void f1(void)
{
a=1;
}
void f2(void)
{
a=2;
}
void f3(void)
{
a=3;
}
main()
{
printf("f1: %lx\n",(long)f1);
printf("f2: %lx\n",(long)f2);
printf("f3: %lx\n",(long)f3);
printf("main: %lx\n",(long)main);
}
通过编译链接后我们可以看到各个函数的地址;
通过Debug加载后可以看到汇编代码:
通过代码可以得知,函数的地址代码是cs和偏移地址组成的.
也可以直接打印出段地址和偏移地址;
main()
{
printf("CS:%x\n",_CS);
printf("f1:%x\n",f1);
printf("f2:%x\n",f2);
printf("f3:%x\n",f3);
printf("main:%x\n",main);
}
可以通过函数的地址计算出程序的长度,也可以通过程序来计算出来,比如 f2函数的长度:修改main函数如下:
Main()
{
long lf2=(long)f3-(long)f2;
printf("f1: %lx\n",(long)lf2);
}
函数名就像是汇编中的标记一样,是一个程序的入口地址,记录的是程序偏移地址.所以可以通过将函数名强制转换类型后可以得到偏移地址,通过运算,从而得到函数的长度.
当打开多个command命令窗口运行程序时,地址是相同的:
使用debug同时加载后在运行后发现地址还是一样的:
- C语言综合研究与高强度程序设计训练 2
- C语言综合研究与高强度程序设计训练 1
- Delphi程序设计综合训练任务书
- 高质量程序设计指南:C++/C语言
- 高质量程序设计指南-c/c++语言:笔记2
- 基于汇编语言与c/c++语言混合编程的程序设计研究(一)
- 《高质量程序设计指南——C/C++语言》第2章 编程语言发展简史
- 《高质量程序设计指南---C++/C语言》 下载
- 《高质量程序设计指南:C++/C语言》图书信息
- 《高质量程序设计指南:C++/C语言》面试题整理
- 《高质量程序设计指南:C++/C语言》 林锐
- 《高质量程序设计指南---C++/C语言》 林锐、韩永泉
- 高质量程序设计指南C++/c语言读书笔记 第一章
- 高质量程序设计指南C++/c语言 第二章
- 高质量程序设计指南C++/c语言 第三章
- 高质量程序设计指南C++/c语言 第四章
- C语言算法训练2
- C语言综合2 --- 字节对齐
- 数据结构课程设计--广义表(链式实现)
- 堆和栈的区别 (转贴)
- 浅谈协方差矩阵
- 开源SVM库libSVM介绍
- poj-3295 Tautology
- C语言综合研究与高强度程序设计训练 2
- Hash Join
- LA 5095 Transportation 费用流
- <MFC笔记>MFC消息映射机制
- Jacob处理Word文档总结以及Java操作Office2007
- STM32系统时钟硬件仿真查看
- 移动APP开发
- 华为机试题002
- 第1次实验——NPC问题(回溯算法、聚类分析)