读书人

怎么取得函数地址?

发布时间: 2013-04-21 21:18:07 作者: rapoo

如何取得函数地址??
火大了,今天早上还好好的.不知道怎么就不好使了!情况如下:

int add(int a,int b){
return a+b;
}
翻译成汇编是:

addr1: jmp addr2


addr2: push ebp ;这里才是函数add的真正地址
mov ebp,esp

当我 char *p = (char*)add 时,得到的是addr1这个地址!!但我想得到addr2这个地址啊,编译器好贱啊尽帮倒忙! 今天早上还还给我addr2的地址,下午不知道弄了什么给我addr1了,弄的我程序出错. 明明调试时那个函数指针的值都是addr2了,最后赋值却给我addr1! 还好用CE跟了才知道原来拿了JMP的地址.
有什么办法法!!加标号也不行啊


[解决办法]
看起来路走的复杂了一些,你的需求是什么?这类问题应该用函数指针来解决的。
[解决办法]
int (*add)(){}用函数指针试试吧。
[解决办法]
(char*)&add;

[解决办法]
解决了就好
一直在关注着,不敢轻易回复,呵呵
还得琢磨琢磨
[解决办法]
楼主的代码这么微妙,需要在汇编上战斗,即便今天修好了,也保不齐那天又坏了,什么样的设计迫使楼主这么搞啊。

读书人网 >C++

热点推荐