msp430 iar 堆疊分析 常量陣列優化

2021-06-11 08:30:51 字數 2872 閱讀 8105

常量陣列定義在函式內部時,函式執行時需要將常量陣列拷貝到堆疊,浪費了堆疊空間,還增加了函式#?copymemorybytes的時間開銷。所以對於陣列常量建議儲存於函式外部,當然這僅限於430的iar編譯器,別的情況就要實際執行一下看了。

對比分析:

常量陣列定義在函式內部

static void updata_lead_num(void)             

; _dint();//關總中斷

lcd_write_string86(7,9,0,dsp_lead[leadnum]);

_eint();//開總中斷

}

對應彙編

static void updata_lead_num(void)             

; 00a154 410c mov.w sp,r12

00a156 403e 4897 mov.w #0x4897,r14

00a15a 403d 0030 mov.w #0x30,r13

00a15e 13b0 a824 calla #?copymemorybytes

_dint();//關總中斷

00a162 c232 dint

00a164 4303 nop

lcd_write_string86(7,9,0,dsp_lead[leadnum]);

00a166 410f mov.w sp,r15

00a168 425e 13ac mov.b &leadnum,r14

00a16c 065e rlam.w #2,r14

00a16e 5e0f add.w r14,r15

00a170 434e clr.b r14

00a172 407d 0009 mov.b #0x9,r13

00a176 407c 0007 mov.b #0x7,r12

00a17a 13b0 71ee calla #lcd_write_string86

_eint();//開總中斷

00a17e d232 eint

}

對應 map

1 (was code)

relative segment, address: a150 - a185 (0x36 bytes), align: 1

segment part 16. intra module refs: menu_preview

local address

***** *****==

updata_lead_num a150

calls direct

cstack = 00000000 ( 00000034 )

常量陣列  函式在外部

uint8 const dsp_lead[12][4] = ;

static void updata_lead_num(void)

對應彙編

updata_lead_num:

00a4d2 c232 dint

00a4d4 4303 nop

lcd_write_string86(7,9,0,dsp_lead[leadnum]);

00a4d6 425f 13ac mov.b &leadnum,r15

00a4da 065f rlam.w #2,r15

00a4dc 503f 48a8 add.w #0x48a8,r15

00a4e0 434e clr.b r14

00a4e2 407d 0009 mov.b #0x9,r13

00a4e6 407c 0007 mov.b #0x7,r12

00a4ea 13b0 71ee calla #lcd_write_string86

_eint();//開總中斷

00a4ee d232 eint

}

對應map

1 (was code)

relative segment, address: a4d2 - a4f1 (0x20 bytes), align: 1

segment part 16. intra module refs: menu_preview

local address

***** *****==

updata_lead_num a4d2

calls direct

cstack = 00000000 ( 00000004 )

python msp430 MSP430的比較器

這兩天研究了一下430的比較器,開始的時候,沒有看懂是怎麼一回事,在 看這方面的部落格,好像懂了,但是一到程式設計,就變得無從下手,但是,皇天不負有心人,筆者還是把他弄懂了 其實這裡就是看懂一幅圖,兩個暫存器,明白工作原理就可以了 這是比較器a的邏輯圖,比價器a由4個部分組成 標號2,外部電壓輸入端...

MSP430教程8 MSP430微控制器復位電路

msp430 微控制器系統復位電路 從上msp430 系統復位電路功能模組圖中可以看到了兩個復位訊號,乙個是上電復位訊號 por power on reset 和上電清除訊號 puc power up clear por 訊號是器件的復位訊號,此訊號只有在以下的事件發生時才會產生 器件上電時。rst...

msp430鍵盤程式

msp430 按鍵程式 含電路圖及源 include void init port void void delay void int keyprocess void return nres 處理來自埠 1 的中斷 interrupt port1 vector void port isr void i...