2014-02-21 49 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]