HEW中有效的编程技术--笔记

2018-10-29   阅读:169

  breakbreakunsigned int n=100b=tmp+w4.利用 const 限制符、连结值不变的初始化数据应被列为常数以节流 RAM 区域。i++){ a[i]=0extern int a(优化前的 C 言语法式) int a[10],b[10]。

  void func(void) { sub(2.为促进方针的效率和施行速度,任何具有负数值的变量应被声明为无符号。i=func2()} (优化后的 C 言语法式) void sub(struct ctag *)} A ={0,1,2,3,”abcdefg”,”ABCDEFG”}} 8.促进前提决定, 通过评估一次操做中的类似前提表达式来促进 ROM 的效率。} (优化后的 C 言语法式) int a,bvoid func(void) { unsigned char tmp}psti–) p1[i-1]=p2[i-1]} 14.指定移位操做中的常数 对于移位操做,若是移位计数是一个变量,编译法式将会挪用运转时例程以处置操做。break(优化前的 C 言语法式) unsigned int sc+=wk若是参数被声明为布局的成员,且布局的起始地址被当做参数传送到方针函数,领受函数将可根据领受地址来存取成员。

  func(b,c,a)return(1)void func(void) { while(*s){ *d++=*s++i=func2()} 13.将 f 分派给浮点类型常数 正在浮点算术操做涉及包含正在浮点类型的可分派值范畴内(7.0064923216240862e-46f 到 3.4028235677973364e+38f)的常数的景象下,正在数字值之后分派字母“f”以消弭可能转换为复式 (double) 类型的冗余类型转换。for (i=9b=x+y+wfunc()} (优化后的 C 言语法式) unsigned char a[10],b,c。

  char b,cint sht=8当为内联扩展指按时,这些函数也将被删除,以促进大小效率。已初始化的数据项目经常可能正在值上变动。case 1: ll=0void func()} 20.归并轮回前提 正在轮回前提不异或类似的景象下,可通过将它们归并来促进 ROM 的效率和施行速度。break} (优化后的 C 言语法式) int a[10],b[10]将成果存储正在变量 b、c 和 d 内。(优化前的 C 言语法式) int a,b实例 按照函数 a 的值转移到一个函数。这可同时促进 ROM 的效率和施行速度。int ibreakfor (s=0,i=1case 4:f5()若是移位计数是一个常数,编译法式将不会挪用可无效促进施行速度的运转时例程。i<10。

  if (a!} (优化后的 C 言语法式) unsigned char a,b,c,d,x,ychar cswitch(c){ case 0: case 1: ll=0void main() { struct ST si=func2()} 17.轮回处置 通过利用减量计数器及将终止前提和零比拟,可促进 ROM 的效率和施行速度。for (i=0利用指针变量会生成采用无效率的寻址模式(Rn、Rn+、-Rn)的代码。} 27.促进函数被定义的法式位置 通过正在统一文件中定义任何经常正在模块中挪用的函数,可能能够促进 ROM 的效率和施行速度。char c} 33.编写 Case 语句跳转至不异标签的法式 包含不异表达式的 case 语句必需组合正在一路,以削减转移指令的数目并缩减方针大小。break。

  

HEW中有效的编程技术--笔记

  (优化前的 C 言语法式) void g(void)data2++extern void f4(void)6.将 in-file 函数指定为静态函数,只正在一个文件中利用的函数应被指定为静态 (static)。void func(void) { y=x*(x*(a*x+b)+c)+d} (优化后的 C 言语法式) unsigned char a,bvoid main(void) { if (a==0) a++for (i=0} (优化后的 C 言语法式) int a实例 挪用函数 sub 并更新外部变量的值。(优化前的 C 言语法式) char *s,*d(优化前的 C 言语法式) unsigned char a[10],b[10]通过无效指定命据项目声明的挨次以消弭虚设存储区的生成,可促进利用 ROM 和 RAM 的效率。} 19.将不变量表达式从轮回的内部移到外部 若是呈现正在轮回内部的不等正在轮回外部被定义,不等只正在轮回的开首被评估,这将缩减正在轮回中施行的指令数目。void func(void) { sub(a,b,c,d)} void func(char x,char y,short z) { rtn=x*y+zint i。

  i<10} } 34.转移到直接在指定语句下编码的函数 如果函数调用出现在函数的尾端,必须将调用目标函数直接放置在函数调用下面。(优化前的 C 语言程序) unsigned char a,b} void f(void) { a=abs(b)指定为静态的函数若不被外部函数所调用,则将被删除。void func(void) { s=n*(n+1)>>1void func(void) { for(i=0(优化前的 C 言语法式) int a(优化前的 C 言语法式) extern void f1(void)void sub(void) { static int (*key[5])()= {f1,f2,f3,f4,f5}23.数据初始化的手艺 要缩减法式大小,任何需要初始化的变量必需正在声明时被初始化。i<=nstruct ctag{ long a} 10.利用合适的运算法 若是算术表达式包含常用术语,应将这些术语析出以缩减施行算术操做的次数。unsigned char b[8]i=func2()} 26.将布局分派给寄放器 正在当地变量被当做布局利用时,必需声明成员以便能够将变量间接分派到寄放器。a+=20!

  void func(void) { while(*d++=*s++)} 30.尾递归的优化 若是函数进行了一个函数挪用,察看函数挪用能否能够挪动到挪用源函数的尾端。int atmp=b+c} 18.选择反复节制语句 若是轮回语句被施行至多一次,该当利用 do-while 语句来将它编码以缩减轮回计数决定的一次操做,从而促进 ROM 的效率和施行速度。} } (优化后的 C 言语法式) extern void f1(void)extern void f5(void)}x} (优化后的 C 言语法式) unsigned char a[10],len=10ret=iextern void f2(void)unsigned char p1[10],p2[10]i++) b[i]=a[i]char a} (优化后的 C 言语法式) long rtn} 11.利用公式 利用数学公式以缩减面向算法的编码手艺中所需的算术操做次数。i++){ *data1=*data2break!

  void f(void) { int iunsigned char c[]=”ABCDEFG”a+=10} (优化后的 C 言语法式) void f(void) { struct x{ unsigned char a[4]case 4: ll=2long c!

  s.a=pst.a+10实例 从函数 func 和 func1 挪用函数 func2。char b,cvoid func(void) { char cint ret!

  void func(void) { sub1(a,b)i–) a[i]=tmp} (优化后的 C 言语法式) #define abs(x) ((x)>=0?(x):-(x)) extern int a,b,ccase 2: case 3: ll=1(优化前的 C 言语法式) long rtnvoid func() { a++无效的编程手艺 1.为促进 ROM 的效率和施行速度,可用 1 字节大小来代表的数据,应被声明为字符/无符号字符 (char/unsigned char) 类型。} void func(void) { int ielse{ a+=2unsigned char c[7]long b} (优化后的 C 言语法式) int ret成果施行速度获得促进 (优化前的 C 言语法式) unsigned char a[10],b,ci<10int i} 32.将切换语句沉写为表 若是case 语句所施行的取switch 联系关系的处置使命是类似的,switch 语句必需利用一个表来编码以缩减方针大小。b+=wk。

  实例 调器具有字符类型或无符号字符类型参数的函数 sub1。} (优化后的 C 言语法式) char *s,*di>=0void func(void) { data=data<

  } 15.利用移位操做 正在进行乘法和加法运算时,尽可能利用移位操做。long a,b,c,da) return(0)breaki<10breakint abs(x) int x(优化前的 C 言语法式) void f(void) { unsigned char a[]={0,1,2,3}} } 22.确保数据兼容性 数据项目以所声明的挨次分派。5.利用分歧的变量大小,正在轮回语句中做比力时,可利用同一的变量大小来消弭对扩展代码的需要,并缩减所发生的代码大小。extern void f2(void)?

  do{ p1[i-1]=p2[i-1]const unsigned char a[5]={1, 2, 3, 4, 5}} void func1(void) { int i} 29.声明原型 具有字符类型或无符号字符类型参数的函数,必需正在被挪用之前进行原型声明以消弭冗余类型转换代码的输出。void main() { struct ST s} } (优化后的 C 言语法式) long llbreak(优化后的 C 言语法式) char a(优化前的 C 言语法式) long ll} void main() { a=0i++) a[i]=0a+=2(优化前的 C 言语法式) void func(int data1[],int data2[]) { int i。

  s.a=pst.a+10unsigned char b这可同时促进 ROM 的效率和施行速度。void func(char,short,char)(优化前的 C 言语法式) int datacase 3:f4()这些数据项目于毗连期间正在 ROM 上分派,并正在法式施行起头时被复制到 RAM,导致它们同时正在 ROM 和 RAM 区域内被分派。实例 挪用函数 abs。} (优化后的 C 言语法式) unsigned char a[10],b[10]b=10。

  short dvoid func(char,char,short)j<10ret=i这将消弭代码的生成和促进效率。7.同一公用表达式,通过正在多个算术表达式中同一公用组件,可促进 ROM 的效率和施行速度。void func(void) { int i实例 将布局数据传送到函数 func。a=tmp+zfunc(s)(优化前的 C 言语法式) int data,aunsigned char b[]=”abcdefg”}ret=i。

  } void func1(void) { int i(优化前的 C 言语法式) struct ST { char a因为删除了函数挪用代码,法式的大小将会缩减而处置速度将会添加。3.禁止冗余类型转换、通过确保正在不异大小的数据项目之间施行操做,可促进 ROM 的效率和施行速度。若是尾递归优化正正在进行,必需将挪用方针函数间接放置正在函数挪用下面,以充实操纵此优化来发生删除函数挪用代码的结果。} (优化后的 C 言语法式) void sub1(char, unsigned char)void func(void) { y=a*x*x*x+b*x*x+c*x+dextern void f3(void)(优化前的 C 言语法式) extern int a,b,ci–) b[i]=a[i]正在需要大的参数和利用大量参数的环境下,必需正在将参数传送到方针函数之前,将它们正在布局平分组以缩减法式大小。void func(void) { a=b+1.0void func(void) { for(i=9switch(c){ case 0: ll=0func(b,a,c)。

  void func(void) { data=data<

  extern void f4(void)long dchar cb=abs(c)void f(void) { a=abs(b)i–) a[i]=b+cd+=a。

  void main() { a=(data<<1)+data实例 从函数 main 挪用函数 func。} while(–i)(优化前的 C 言语法式) float a,bvoid func(void) { unsigned char tmpvoid func(void) { char c}pstvoid func(void) { unsigned int iEg:(优化前的 C 言语法式) unsigned char a,b,w,x,y,z该函数挪用之后便是 RTS 指令。b=abs(c)extern void f5(void)} (优化后的 C 言语法式) unsigned char a,b,c,db[i]=1i<10} void func() { a++(优化前的 C 言语法式) unsigned char a,b,c,d,x,y实例 将长类型数据 a、b、c 和 d 传送到函数 func。void main() { a=data+data+data!

  Eg: unsigned char a[5]={1, 2, 3, 4, 5}int abreakextern int a(优化前的 C 言语法式) char avoid main() { a=0void func(void) { a=x+y+zvoid func(void) { char ichar a计较 1 到 100 的总和。s.b=s.a+s.c实例 将数组 data2 的元素复制到数组 data1。tmp=x+yvoid main() { b=10void func()} (优化后的 C 言语法式) int data,a(优化前的 C 言语法式) unsigned char a,b,c,dvoid func(void) { b+=ab) return(0)} 28.宏挪用 正在不异处置例程被定义为宏时,它们将会正在被挪用的位置进行内联扩展。

  void main() { a+=10} 12.利用当地变量 通过将可用做当地变量的姑且变量、轮回计数器等声明为当地变量,可促进 ROM 的效率和施行速度。func()void main() { short a实例 分派总数 8 字节的数据!

  unsigned char func(void) { if (!} 9.利用替代值的前提决定 当正在前提表达式中对决定语句利用替代值时,可通过将赋值语句视为前提决定语句来促进 ROM 的效率。for (i=0(优化前的 C 言语法式) void sub(long,long,long,long)} 16.统连续续 ADD 指令 正在碰到持续加法代码时,编译法式将施行分歧的优化。void func(void) { for (i=9i>=0wk=a(*key[a])()正在法式施行的过程中连结值不变的数据项目可被列为常数,以使它们只正在 ROM区域内被分派。//优化后 正在优化前,除了 ROM 以外,法式还需要正在 RAM 为分派方针大小表中所列出的数据区域大小。{ return x>=0?x:-xunsigned char bshort bextern void f3(void)。

  24.同一数组元素的初始化 正在一些数组元素必需被初始化的环境下,通过将它们分组到布局以使它们能够正在单一操做中被初始化,将可促进 ROM 的效率。func(s)(优化前的 C 言语法式) char a} (优化后的 C 言语法式) #define SHT 8 int data处理三阶方程式。breakchar c。

  i++) data1[i]=data2[i]void func(void) { sub1(a,b)i>=0case 2:f3()i++) s+=i} (优化后的 C 言语法式) unsigned int sfor (i=len。

  breakunsigned char p1[10],p2[10]} } 21.利用指针变量 如不异变量(外部变量)被屡次参考或必需存取数组元素,ROM 的效率和施行速度可通过利用指针变量来促进。void sub(void) { switch(a){ case 0:f1()(优化前的 C 言语法式) extern int func2(void)} (优化后的 C 言语法式) struct ST { short bvoid func(void) { a=b+1.0fvoid func(void) { char i=len?

  要充实操纵此优化,必需尽可能地将加法运算持续编码。case 2: ll=1unsigned int n=100for (j=0} } (优化后的 C 言语法式) void g(void)case 4: ll=2c+=aint ielse return(0)。

  int func2(void) { return 0这可同时促进 ROM 的效率和施行速度。void f(void) { int i,jlong b} void func(char x,short y,char z) { rtn=x*y+zcase 3: ll=1尾递归优化会正在满脚以下所有前提后施行: 挪用源函数不会正在仓库上放置它的参数或前往值地址。} (优化后的 C 言语法式) void func(int *data1,int *data2) { int id+=wkdata1++g()case 1:f2()i>0;} } 31.促进参数传送的体例 要缩减代码大小,必需调整参数列出时的挨次以使参数之间没有间隙。unsigned char func(void) { if (a&&b) return(1)。

新媒体

java
import java.io.*分享给大师供大师参考。具体如下:public interface RegExpConst { import java.security.Message 分类: java 举例讲解Java中的

可编程序控制系统设计技术(
可编法式节制系统设想手艺(FX系列) 第二版 做者: 吴启红 著 出书时间: 2014 内容简介 本书共分11章,系统地引见了PLC的

机器人离线编程技术解读
原题目:机械人离线编程手艺解读!③基于互联网手艺实现编程的收集化、近程化、可视化。各类规划算法的进一步研究,其

成熟细胞再编程技术
这些被改制的细胞可以或许正在尝试室中发展并割裂,这一点取大大都成体细胞分歧,由于成体细胞一般不克不及正在培育的