存储模式和代码效率
存储模式决定了缺省变量的存储空间,而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。
例如:一个整形变量i,如放于内存18h、19h空间,则++i的操作编译成四条语句:
inc 0x19
mov a,0x19
jnz 0x272d
inc 0x18
0x272d:
而如果放于外存空间0000h、0001h则++i的操作编译成九条语句:
mov dptr,0001
movx a,@ dptr
inc a
movx @ dptr,a
jnz #5
mov optr,#0000
movx a,@dptr
inc a
movx @ dptr,a
就汇编之后的语句而言,对外部存储器的操作较内部存储器操作代码率要低得多,生成的语句为内存的两倍以上,而程序中有大量的这种操作,可见存储模式对代码率的响了。
因此程序设计的原则是
1、存储模式从small-compact-large依次选择,实在是变量太多,才选large模式。
2、即使选择了large模式,对一些常用的局部的或者可放于内存中的变量,最好放于内存中,以尽量提高程序的代码率。