网站大量收购独家精品文档,联系QQ:2885784924

嵌入式系统电子课件-4.4 ARM C程序优化设计.pptx

嵌入式系统电子课件-4.4 ARM C程序优化设计.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共81页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

ARMC程序优化设计

高效的C程序设计本节通过一系列例子研究编译器如何把C代码转换成ARM汇编代码。以帮助程序员区分快速和慢速的C代码,进而指导程序员进行C程序设计。

ARMC程序设计优化编译器的特性数据类型对程序效率的影响循环结构对程序效率的影响指针对程序效率的影响0203040105边界对齐问题★★★

编译器的特性1代码优化:时间优化、空间优化代码优化与程序的可读性:矛盾需要优先优化的代码对象:频繁使用的代码

例1voidmemclr(char*data,intN){for(;N0;N--){*data=0;data++;}}dataN清除从指针data开始的N个字节空间

例1(续)清除从指针data开始的N个字节空间问题:编译器不知道N是否为0。编译器不知道data是否4字节对齐。编译器不知道N是否为4的倍数voidmemclr(char*data,intN){for(;N0;N--){*data=0;data++;}}

结论编译器是保守的:必须假定N的所有可能值必须假定data所有可能的边界值

编写高效C代码的要求了解哪些方面编译器是保守的了解编译器对应的处理器体系结构

数据类型对编程效率的影响2ARMv8-A架构之前,ARM是32位RISC机器Load/store不同的C数据类型,效率不同。

局部变量类型尽量采用int、long类型仅使用char、short的溢出归零特性

例2intchecksum_v1(int*data){chari;intsum=0;for(i=0;i64;i++)sum+=data[i];returnsum;}校验和1

例2intchecksum_v1(int*data){chari;intsum=0;for(i=0;i64;i++)sum+=data[i];returnsum;}校验和1i声明为char的优缺点?

例2intchecksum_v1(int*data){chari;intsum=0;for(i=0;i64;i++)sum+=data[i];returnsum;}校验和1i声明为char的优缺点?char表达的范围超过了64,可以完成题目要求。char更节省寄存器和内存空间。

例2(续)校验和1checksum_v1_sMOVr2,r0 ;r2=data,地址指针MOVr0,#0 ;sum=0MOVr1,#0 ;i=0,计数器checksum_v1_loopLDRr3,[r2,r1,LSL#2] ;r3=data[i]ADDr1,r1,#1 ;r1=i+1ANDr1,r1,#0xff ;i=(char)r1CMPr1,#0x40 ;comparei,64ADDr0,r3,r0 ;sum+=r3BCCchecksum_v1_loop ;if(i64)loopMOVpc,r14 ;returnsum

例2(续)校验和1讨论:i是char型,超过255要归零,所以汇编程序中要确保其不超过255。上述汇编共10条指令

例2(续)intchecksum_v1(int*data){chari;intsum=0;for(i=0;i64;i++)sum+=data[i];returnsum;}校验和2intchecksum_v2(int*data){unsignedinti;intsum=0;for(i=0;i64;i++)sum+=data[i];returnsum;}

例2(续)校验和2checksum_v2_sMOVr2,r0 ;r2=dataMOVr0,#0 ;sum=0MOVr1,#0 ;i

文档评论(0)

yzs890305 + 关注
实名认证
内容提供者

计算机二级持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年11月02日上传了计算机二级

1亿VIP精品文档

相关文档