我的程序中,用了大量的指针的指针作为函数的参数,很多处理都涉及到指针的移动和比较,很多代码可以编译通过,但是,实际运行结果却一沓糊涂。例如: uint8 *cp1; uint8 *cp2; uint8 buffo[100];
cp1 = buffo; cp2 = buffo + 0x21u;
if (cp1 < cp2){...}
以上代码在51、x86、arm7都用过,没有任何问题,但在pic中,编译可以通过,但if逻辑根本不成立,根本运行不到if里面的语句。仿真时将鼠标移到cp1、cp2、buffo上面,显示cp1为0x9f,cp2为0xbc0。
后来反复想,可能是pic的内存分页机制导致的。惨痛的是,我的程序又要重新写了。 |