程序的结构单元包括模块、函数等等。同样的功能,如果结构越复杂,其所涉及的操作、变量、功能模块函数等就越多,较之结构性好,代码简单的程序其代码率自然就低得多。
此外程序的运行控制语句,也是影响代码率的关键因素,例如:switch -case语句,许多编译器都把它们译得非常复杂,Keil C51也不例外,相对较为简易的Switch-case语句,编译成跳转指令形式,代码率较高,但对较为复杂的Switch-Case,则要调用一个系统库函数?C?ICASE进行处理,非常复杂。
再如if( ),while( ),等语句也是代码相对较低的语句,但编译以后比switch-case要高得多。
因此建议设计者尽量少用switch-case之类语句来控制程序结构,以提高代码率。
除以上两点外,其它因素也会对代码率产生影响,例如:
是否用寄存器传递参数 即NOAREGS选项是否有
是否包括调试信息:即DEBUG选项
是否包括扩展的调试信息:即BJECTEXTEND |