illegal instruction arm

ARM 108浏览

pc运行没问题,但是arm上illegal instruction错误.定位到错误出现在下面代码(里面变量均为int)  

            y=y+dif*0.5+boaderWidth; 

改为两行,或者移位实现除以2不会报错.具体原因未知.是不能智能的转换数据类型造成的

            int dif_half=dif*0.5;

            y=y+dif_half+boaderWidth;

也可以改为

            y=y+(int)(dif*0.5)+boaderWidth;

不改动代码的情况,应该增加arm的编译配置选项-march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a9