如何把一个算法函数编译成一个二进制数组,进行调用?

2019-12-28 17:50发布

纯技术讨论,不用lib方式,如何把一个算法函数编译成一个二进制数组,然后再工程中进行调用?  为了算法保密。 lib文件,这样太明显了。
16条回答
gamethink
2019-12-29 12:21
如果是单片机,感觉很难做哦。以下是我的想法,没试过,只是想法。
首先你得独立将算法抽出来,用一个单独工程并汇编写好,并且固定好里面使用的内存空间,在入口PUSH,出口POP保护好所有的环境,然后还得想好返回的东西放在什么地址,要固定下来,不要让编译器占用,具体怎么做我忘记了,很久很久以前试过。然后将这块东西编译。(可能用C语言也可以实现?)
然后编译完找出那一块代码的二进制数据,因为刚才编译出来肯定用的是一个完整工程,通常会有启动代码,也许自己写的,也许编译器自带的,所以要避开这部分,找出编译好的那一块东西对应的二进制数值,然后放在程序空间。要注意大端小端的问题。然后将程序指针手工移动到那块数据然后执行。

估计这样做也会遇到很多困难,例如编译错误什么的,程序崩溃什么的,需要尝试下

一周热门 更多>