加密狗程序编写过程中的点滴

开始不知道加密狗用什么写的,,领导给我一个加密狗给我一段C++算法,,然后跟我说是把这段C++算法写成C,然后烧写到加密狗里,我是做C开发的用C写一遍,只要稍微熟悉一下C++的意思用C写出来很简单的事情嘛。。。可是我接受这个活之后,我才发现,原来加密狗认的是C51语言,,本来也没多少区别,,但是算法中全都是浮点运算啊,,各种浮点double的运算啊,,C51不支持浮点运算,,各种浮点的加减乘除,,赋值,取反,,,等等都不支持啊,,按照C的语法没法写啊,,,坑爹啊。。。

 

让我把C++算法转换成C51的,,,还全是复杂的浮点运算。。。擦。。。。没办法,,努力的去看官方手册的案例、、、中途遇到问题的时候,给官方技术支持打电话询问。。真心想骂人,,,艹,,什么技术支持,,TMD啥都不知道,,你当个屁支持,,多问几个问题直接不搭理我了。。。我只能自己去摸索。。各种实验,写一句测试一句,,看看用的对不对。。各种C的语法都不能直接使用,,,哎

 

捉摸了老久,,终于琢磨出来一点道道了

 

说个中途卡顿时间长的傻逼错误。。。

1,我赋值的时候刚开始想定义变量a0(零)的,,结果手残定义成ao(欧)了,,然后编译就是提示没定义,,我很费劲,,明明定义了啊。。卡了我好几个小时。。最后删了变量重新定义才发现的问题

 

2,在代码一种过程中,周期比较长,,我中途改过一个变量,然后相应的后面没有改过来,,然后变量也都有定义,,未改之前跟要移植的程序是一个逻辑的,,发现输出不对的时候,,回来对照源代码看,,一个样啊,,没发现啥问题啊。。又卡了我好久


3,加密狗的51芯片不支持double运算,,官方给了浮点运算的接口,,但是官方只给了一些简单例程,好坑爹啊,,其他一些都得自己摸索,,按照官方的变量类型,double不能直接赋值,想在两个double之间赋值要用memcpy复制内存,,要是想给一个double型赋值常数时,需要先把一个常数赋值给一个51支持的类型,然后再通过一个转换函数转换为double类型的,,再就是51中存储时大端存储,,windows中是小端存储,,这个字节序需要注意。。取反操作也不能直接取反,,要用0与那个值做一个减法的官方接口运算,,不能直接比较大小,,,,基本上所有的赋值运算都是用的memcpy操作的内存。。。。



4,51程序没写过,,貌似51的一些软件是支持浮点运算的,,但是我在加密狗中测试时,,有double的类型,,但是直接用double进行赋值运算时,输出结果是不对的。。不知道为什么,,以后再研究一下吧。。


对了官方给的是大写的DOUBLE类型,,


写这种程序时尽量看一下官方手册,,按照官方手册的格式来写吧,,

你可能感兴趣的:(单片机)