常量数组定义在函数内部时,函数运行时需要将常量数组拷贝到堆栈,浪费了堆栈空间,还增加了函数#?CopyMemoryBytes的时间开销。所以对于数组常量建议存储于函数外部,当然这仅限于430的iar编译器,别的情况就要实际运行一下看了。
对比分析:
常量数组定义在函数内部
static void updata_lead_num(void)
{
UINT8 const Dsp_Lead[12][4] = { "V1 ","V2 ","V3 ","V4 ","V5 ","V6 ",
"I ","II ","III","aVL","aVR","aVF" };
_DINT();//关总中断
LCD_WRITE_STRING86(7,9,0,Dsp_Lead[LeadNum]);
_EINT();//开总中断
}
对应汇编
static void updata_lead_num(void)
{
updata_lead_num:
00A150 8031 0030 sub.w #0x30,SP
UINT8 const Dsp_Lead[12][4] = { "V1 ","V2 ","V3 ","V4 ","V5 ","V6 ",
"I ","II ","III","aVL","aVR&#