我用的芯片是ARMV4I,发现在编译retail版的时候,原本好好的C代码被编成了乱七八糟的东西,看汇编发现甚至调用的函数都和我要求的不一样,不知道是什么原因。现在希望能把那个相应的文件的优化给关掉,请各位大虾指教。
回复(7) 2004-12-27 09:58 来自版块 - Wince 程序开发
表情
wxl_50685330嗯,还有一种可能是链接的时候库的顺序给得不对好像也有影响,特别是几个库里面有同名函数,CE的编译器好像允许这样,好像是使用先找到的。你再看看,找到原因告知:)(2004-12-29 13:49)
qwdrv哦,情况和你说的可能有点不一样,那些不是Thumb代码,无论是静态看还是动态跟踪,那些代码都和C代码相去甚远,甚至有的地方连调用的函数都不一样,所以我才怀疑是优化出了问题。 找不到解决的办法,只好绕过去了。(2004-12-28 15:20)
wxl_50685330"优化以后的汇编代码和c代码在有些地方根本就对不上号,好一些的地方也是变成了完全不能完成需要的指令。是不是PB对arm指令的优化做的非常差?" 有些东西编译出来好像是有点儿怪,不过都是对的,你要注意有的代码(主要是一些函数)被编译成THUMB指令了,...(2004-12-28 13:40)
qwdrv在源代码里可以用 #pragma optimize("",off) ... #pragma optimize("",on) 把你不想优化的代码包含起来. 在SOURCES文件里设上WINCECOD=1,编译的时候会产生汇编...(2004-12-28 07:32)
joyfly在源代码里可以用 #pragma optimize("",off) ... #pragma optimize("",on) 把你不想优化的代码包含起来. 在SOURCES文件里设上WINCECOD=1,编译的时候会产生汇编...(2004-12-27 15:59)
qwdrv一般的优化是把函数调用,堆栈使用,以及逻辑代码进行优化,即使出错也是像没有保护某个寄存器,以及把eax优化成了ax这样的而已。 但是现在出的问题确实是非常奇怪,优化以后的汇编代码和c代码在有些地方根本就对不上号,好一些的地方也是变成了完全不能完成需要的指令。是不是PB对arm指...(2004-12-27 15:18)
wxl_50685330好像只是在函数入口的地方堆栈操作变了,记不太清了,不过没几条阿,怎么会是乱七八糟的?(2004-12-27 13:24)

返回顶部