void cc() { } void main() { char ccH,ccL; }cc是一个函数指针。 应该是由三个字节组成的:第一个字节是指针的类型。 第二个字节是指向函数地址的高8位 第三个字节是指向函数地址的低8位 那么如何将函数地址的高8位和低8位赋值给ccH和ccL呢?类似这样。复制char *ccP=&cc; ccH=*(ccP+1); ccL=*(ccP+2);但是我希望能直接通过类似这样的方式获取,当然编译通不过。复制ccH=cc>>8 ccL=cc>>16 就是说通过编译器直接获取cc的高低地址,而不是通过代码运算。
char *ccP=&cc; ccH=*(ccP+1); ccL=*(ccP+2);但是我希望能直接通过类似这样的方式获取,当然编译通不过。复制ccH=cc>>8 ccL=cc>>16 就是说通过编译器直接获取cc的高低地址,而不是通过代码运算。
ccH=cc>>8 ccL=cc>>16 就是说通过编译器直接获取cc的高低地址,而不是通过代码运算。
收藏0 举报
xiaoyuan_ly 发表于 2013-10-9 22:06 想了下,你看这样行不?! 先在C中定义 void cc(void) {} 和 void (* const p)(void) {} , 然后 p = cc; ...
chenbb8 发表于 2013-10-9 23:35 不用那么复杂的,直接用union就行了,将值赋给union中的函数指针变量,再当作字节用就OK了。 需要注意的 ...
xiaoyuan_ly 发表于 2013-10-9 22:36 我刚才翻了下51汇编书,关键是要找到C编译之后,这个函数cc函数名符号在汇编中的表述:如_?cc 那么就可以 ...
MOV DPTR,#_?cc ;或者是 MOV DPH,#HIGH _?cc MOV DPL,#LOW _?cc
lzp3520265 发表于 2013-10-10 19:25 从keil仿真的结果来看,是三个字节。一个字节表示类型,两个字节表示地址。 现在我发现只要将函数地址转类 ...
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
等级类勋章
发帖类勋章
8
41
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号