2014-02-21 44 views
-1

我有一些問題,當我使用編譯器非常好的未優化指令時,需要使用什麼指令集。程序集指令集問題

我這有一個這樣的void函數:

void feed(void) 
{ 
IWDG_ReloadCounter(); 
} 

這裏有說明。

//PUSH REGISTER ONTO STACK 
push {r7} 
//ADD 
add r7, sp, #0 

//??? 
mov.w r3, #12288 
//MOVE TOP 
movt r3, #16384 
//MOVE 16-BIT CONSTANT 
movw r2, #43690 
//STORE REGISTER WORD 
str r2, [r3, #0] 

//MOVE 
mov sp, r7 
//POP REGISTER FROM STACK 
pop {r7} 
//BRANCH INDIRECT 
bx lr 

能理解他們使用。任何人都有一些智慧的話語。

+2

什麼是你想在這裏實現?編譯器生成了9條指令。即使假設你可以改善這一點,除非你連續數週運行這些代碼,否則這種改進將是不明顯的。 – 2014-02-21 21:47:51

+0

我試圖做的事是讓這個工作,因爲它沒有。 IWDG_ReloadCounter提供一個看門狗,以便系統不重啓。而當我嘗試使用這個函數生成的程序集時,什麼都沒有發生。它是一個空白,所以我不需要關於堆棧的東西,所以這些比推動堆棧和流行的東西更應該刪除。 – mogren3000

+0

然後,你需要重新說出你的問題。目標並不清楚你的目標是什麼,而且遠遠沒有足夠的信息來幫助診斷。 – 2014-02-22 00:25:48

回答

0

因爲函數與指針來我只需要使用這些指令:

mov.w r3, #12288 
movt r3, #16384 
movw r2, #43690 
str r2, [r3, #0]