当前位置: 首页 > news >正文

中国网站制作公司重庆百度提升优化

中国网站制作公司,重庆百度提升优化,phpcms做网站建栏目,山西建设厅网站遇到的问题: 未开优化是正常执行,打开优化,无法运行,定位到异常语句 //ADC_REG 是ADC结果寄存器地址 uint32 adc *(uint32 *)ADC_REG; uint32 temp adc&0xffff;未优化汇编代码 //uint32 adc *(uint32*)ADC_REG; MOVW R…

遇到的问题:
未开优化是正常执行,打开优化,无法运行,定位到异常语句

//ADC_REG 是ADC结果寄存器地址
uint32 adc = *(uint32 *)ADC_REG;
uint32 temp = adc&0xffff;

未优化汇编代码

//uint32 adc = *(uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
//uint32 temp = adc&0xffff;
UBFX 		R2 , 	R0,		#0,		#16		进行与运算

优化汇编代码

//uint32 adc = *(uint32 *)ADC_REG;
//uint32 temp = adc&0xffff;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDRH		R0,		[R8]					//半字节数据读取数据到R0

问题就在 LDRH指令;由于通用寄存器读取外设寄存器需要按照32位读取,并且需要使用的数据刚好就是半字,编译器优化后就使用LDRH指令进行半字读取,从功能上是等效的,但是由于内核寄存器对外设寄寄存器需要使用32位读取即LDR.W指令,编译器优化使用16位读取即LDRH,故此出现 busfault 。解决办法,即在读取时添加volatile,不使用用编译器优化。

volatile优化汇编代码

//uint32 adc = *(volatile uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
UBFX 		R0, 	R0,		#0,		#16		//进行与运算
http://www.yayakq.cn/news/394714/

相关文章:

  • element ui做的网站泰安网约车
  • 能做SEO优化的网站建设郑州营销型网站制作运营
  • 上海市网站建设定制国税网站页面建设中
  • 做网站几天能学会手机大全商城
  • 建分类网站得花多少钱网站建设取得了
  • 池州网站制作公photoshop怎么做网站
  • 呼和浩特整站优化西湖app开发公司
  • 做购物网站那个好旅游电子商务网站
  • 河北网站建设方案ps做字幕模板下载网站有哪些
  • 帝国做网站的步骤网站建设公司排名及费用
  • .net网站程序电子商务网站建设与维护实验报告
  • 安卓网站开发平台企业宣传片模板直接套用
  • 设计网站用什么软件域名跳转wordpress
  • 山东网站建设开发深圳手机医疗网站建设
  • 讯美智能网站建设用page打开wordpress
  • 做电子元器件销售什么网站好凡客诚品app
  • 自己给网站做优化怎么做如何制作和设计公司网站
  • 建个网站需要投资多少钱网站建站主题
  • 商城微网站建设自适应微网站开发
  • 电子商务网站建设实训报告心得wordpress id
  • 自己怎么健网站视频下载网站建设哪个空间比较好
  • 空包网站做红章底单阿里云建站和公司建站有什么优势
  • 滨海新区做网站wordpress自定义应用
  • 知识付费网站建设做电商网站的
  • 保定网站建设系统wordpress进入管理
  • 上海网站开发运营手机网站 返回顶部
  • 涿州做网站建设深圳小程序网站开发
  • 网站建设 的介绍建筑设计资质等级标准
  • win7建设网站教程学校网站建设管理制度
  • 青岛海川建设集团网站网站的重要性