欢迎有幸参加了“C语言指针与汇编内存地址”的老人们继续来捧场啊!
“C语言指针与汇编内存地址(二)”公开课
http://edu.csdn.net/huiyiCourse/detail/127
通过求函数大小功能和求函数调用者实例了解指针与函数对应的汇编内存地址。
sizeoffun.c
#include <stdio.h>
void fun1() {
int f1=1;
printf("fun1\n");printf("fun1\n");
}
void fun2() {
int f2=2;
printf("fun2\n");
}
void fun3() {}
int main() {
#ifdef _DEBUG
printf("sizeof(fun1)==%d\n",((int)fun2+5+*(int *)((int)fun2+1))-((int)fun1+5+*(int *)((int)fun1+1)));
printf("sizeof(fun2)==%d\n",((int)fun3+5+*(int *)((int)fun3+1))-((int)fun2+5+*(int *)((int)fun2+1)));
#else
printf("sizeof(fun1)==%d\n",(int)fun2-(int)fun1);
printf("sizeof(fun2)==%d\n",(int)fun3-(int)fun2);
#endif
return 0;
}
whocallme.c
#include <stdio.h>
void whocallme();
void fun1() {
printf("in fun1\n");whocallme();
}
void fun2() {
printf("in fun2\n");whocallme();
}
void fun3() {}
void whocallme() {
int *_ebp;
__asm {
mov eax,ebp
mov _ebp,eax
}
#ifdef _DEBUG
printf("\nfun1,fun2,fun3,_ebp=%08x,%08x,%08x,%08x\n",(int)fun1+5+*(int *)((int)fun1+1),(int)fun2+5+*(int *)((int)fun2+1),(int)fun3+5+*(int *)((int)fun3+1),(int)_ebp);
#else
printf("\nfun1,fun2,fun3,_ebp=%08x,%08x,%08x,%08x\n",(int)fun1,(int)fun2,(int)fun3,(int)_ebp);
#endif
printf("ret addr=%08x\n",_ebp[1]);
#ifdef _DEBUG
if ((int)fun1+5+*(int *)((int)fun1+1)<=_ebp[1] && _ebp[1]<(int)fun2+5+*(int *)((int)fun2+1)) printf("fun1 callme\n");
if ((int)fun2+5+*(int *)((int)fun2+1)<=_ebp[1] && _ebp[1]<(int)fun3+5+*(int *)((int)fun3+1)) printf("fun2 callme\n");
#else
if ((int)fun1<=_ebp[1] && _ebp[1]<(int)fun2) printf("fun1 callme\n");
if ((int)fun2<=_ebp[1] && _ebp[1]<(int)fun3) printf("fun2 callme\n");
#endif
}
int main() {
fun2();
fun1();
return 0;
}
我的课从来不怕提前剧透!
62 个解决方案
#1
#2
#3
你这个表情缺那么点“喜大普奔”的感觉。
#4
哈哈,报名去
#5
老赵上课有报酬吗
#6
有。为什么没有。
您老也可以申请讲公开课,挣点玫瑰花或奶粉或课外班钱。
#7
#8
#9
前排,前排,上次的视频怎么没发出来啊还,有些地方没听清啊
#10
前排接分,赵老师v5
#11
赵老师又来,又是周二,靠靠靠...
#12
#13
报个名
#14
完全看不懂这是什么
#15
学习一下!!
#16
#17
这些年汇编都还给老师了
#18
太好了,正好给老婆挣点玫瑰花钱,给老大挣点课外班钱,给老二挣点奶粉钱...
#19
感觉指针看书看的很明白 用的时候就迷糊了
#20
已报名
#21
#22
#23
点个赞,报个名。哈哈
#24
特地用手机来接分,
#25
#26
#27
#28
赵老师,我又来接分啦
#29
赵老师,我爱你
#30
哈哈哈,,第一次参加公开课~
#31
看例子,你还活在32位的世界里
#34
看例子,你还活在32位的世界里
X86汇编包含64位吗?!
#35
接分。。。。。
#36
拿分,支持
#37
第一期看了,是来接赵老师的分的!
#38
第一期看了,是来接赵老师的分的!
好不容易找到一个看了的。
能在此帖发表几句你的观后感( 和 都欢迎)帮我拉拉人气吗?
#39
赵老师,我爱你
今天这个特殊的日子最适合表白了!
#40
发来贺电
#41
第一期看了,是来接赵老师的分的!
好不容易找到一个看了的。
能在此帖发表几句你的观后感( 和 都欢迎)帮我拉拉人气吗?
凡是看过第一期且在此帖发表几句你的观后感( 和 都欢迎)帮我拉人气的好心人,我多多散分给你!
#42
看了赵老师的第一期了,说说我的感言吧!首先,我的第一门编程语言是C语言,所以在csdn接触的第一个技术板块就是C语言板块了。大家都知道,赵老师是C语言板块的风云人物啊!现在我是Java初级程序员了,当然还是实习阶段。
自己的C语言水平就限制在大学的C语言课程,学了半年的C语言,半年的数据结构(C语言实现),半年的c++,半年的汇编语言,所以自己对硬件编程的只是很有限,听赵老师的课程还是有点难度的,毕竟很久不用汇编了,上次听起来就只有一个概念而已。所以,对那些在校生或者刚入职的嵌入式,或者接近底层的同学可以多多理解,交流。
赵老师在答疑阶段也是答得不错的。提问者的每个问题都会答道,但是也会造成很多问题解答的不深入。
自己的C语言水平就限制在大学的C语言课程,学了半年的C语言,半年的数据结构(C语言实现),半年的c++,半年的汇编语言,所以自己对硬件编程的只是很有限,听赵老师的课程还是有点难度的,毕竟很久不用汇编了,上次听起来就只有一个概念而已。所以,对那些在校生或者刚入职的嵌入式,或者接近底层的同学可以多多理解,交流。
赵老师在答疑阶段也是答得不错的。提问者的每个问题都会答道,但是也会造成很多问题解答的不深入。
#43
蹭点分,赵老师记得及时结贴..........
#44
已经报名第二期了!!!
#45
蹭点分,赵老师记得及时结贴..........
怎么也得等到课讲完以后再结贴吧。
#46
刚看了一遍第一次课的录像。
里面既没萝莉,也没大叔!
里面既没萝莉,也没大叔!
#47
刚看到这个帖子,先把(1)看下,再来看(2)……
看了视频才知道赵老师的大名……
看了视频才知道赵老师的大名……
#48
不明觉厉。。。
#49
顶一顶。。。
#1
#2
#3
你这个表情缺那么点“喜大普奔”的感觉。
#4
哈哈,报名去
#5
老赵上课有报酬吗
#6
老赵上课有报酬吗
有。为什么没有。
您老也可以申请讲公开课,挣点玫瑰花或奶粉或课外班钱。
#7
#8
#9
前排,前排,上次的视频怎么没发出来啊还,有些地方没听清啊
#10
前排接分,赵老师v5
#11
赵老师又来,又是周二,靠靠靠...
#12
#13
报个名
#14
完全看不懂这是什么
#15
学习一下!!
#16
#17
这些年汇编都还给老师了
#18
老赵上课有报酬吗
有。为什么没有。
您老也可以申请讲公开课,挣点玫瑰花或奶粉或课外班钱。
太好了,正好给老婆挣点玫瑰花钱,给老大挣点课外班钱,给老二挣点奶粉钱...
#19
感觉指针看书看的很明白 用的时候就迷糊了
#20
已报名
#21
#22
#23
点个赞,报个名。哈哈
#24
特地用手机来接分,
#25
#26
#27
#28
赵老师,我又来接分啦
#29
赵老师,我爱你
#30
哈哈哈,,第一次参加公开课~
#31
看例子,你还活在32位的世界里
#32
求好心人帮忙断帖:
http://bbs.csdn.net/topics/391951019
#33
#34
看例子,你还活在32位的世界里
X86汇编包含64位吗?!
#35
接分。。。。。
#36
拿分,支持
#37
第一期看了,是来接赵老师的分的!
#38
第一期看了,是来接赵老师的分的!
好不容易找到一个看了的。
能在此帖发表几句你的观后感( 和 都欢迎)帮我拉拉人气吗?
#39
赵老师,我爱你
今天这个特殊的日子最适合表白了!
#40
发来贺电
#41
第一期看了,是来接赵老师的分的!
好不容易找到一个看了的。
能在此帖发表几句你的观后感( 和 都欢迎)帮我拉拉人气吗?
凡是看过第一期且在此帖发表几句你的观后感( 和 都欢迎)帮我拉人气的好心人,我多多散分给你!
#42
看了赵老师的第一期了,说说我的感言吧!首先,我的第一门编程语言是C语言,所以在csdn接触的第一个技术板块就是C语言板块了。大家都知道,赵老师是C语言板块的风云人物啊!现在我是Java初级程序员了,当然还是实习阶段。
自己的C语言水平就限制在大学的C语言课程,学了半年的C语言,半年的数据结构(C语言实现),半年的c++,半年的汇编语言,所以自己对硬件编程的只是很有限,听赵老师的课程还是有点难度的,毕竟很久不用汇编了,上次听起来就只有一个概念而已。所以,对那些在校生或者刚入职的嵌入式,或者接近底层的同学可以多多理解,交流。
赵老师在答疑阶段也是答得不错的。提问者的每个问题都会答道,但是也会造成很多问题解答的不深入。
自己的C语言水平就限制在大学的C语言课程,学了半年的C语言,半年的数据结构(C语言实现),半年的c++,半年的汇编语言,所以自己对硬件编程的只是很有限,听赵老师的课程还是有点难度的,毕竟很久不用汇编了,上次听起来就只有一个概念而已。所以,对那些在校生或者刚入职的嵌入式,或者接近底层的同学可以多多理解,交流。
赵老师在答疑阶段也是答得不错的。提问者的每个问题都会答道,但是也会造成很多问题解答的不深入。
#43
蹭点分,赵老师记得及时结贴..........
#44
已经报名第二期了!!!
#45
蹭点分,赵老师记得及时结贴..........
怎么也得等到课讲完以后再结贴吧。
#46
刚看了一遍第一次课的录像。
里面既没萝莉,也没大叔!
里面既没萝莉,也没大叔!
#47
刚看到这个帖子,先把(1)看下,再来看(2)……
看了视频才知道赵老师的大名……
看了视频才知道赵老师的大名……
#48
不明觉厉。。。
#49
顶一顶。。。