全国销售热线:

13395113888

万博体育赛事平台

您所在的位置:万博体育赛事平台 > 万博体育赛事平台 >

CORTEX m0+ 单周期乘法指令问题(已解决)

发布时间:2020-10-24 00:40    点击次数:195次   

  这句的运行时间肯定短,因为它会直接将16384*16384算好后放在一个寄存器里,然后你运行这句的时候,就直接取结果了。

  m=(a*b)15这个时间稍长,是因为要先取数放在a和b中,然后再进行乘法指令(一个机器周期)。而每个取数据的时间,都会占用2个机器周期,再加放结果,所以时间会比较长点。

  这句的运行时间肯定短,因为它会直接将16384*16384算好后放在一个寄存器里,然后你运行这句的时候,就直接取结果了。

  m=(a*b)15这个时间稍长,是因为要先取数放在a和b中,然后再进行乘法指令(一个机器周期)。而每个取数据的时间,都会占用2个机器周期,再加放结果,所以时间会比较长点。

  嗯嗯是整个函数的时间,只要把乘法封装成一个函数来调用,时间就变得很长了,大概是2us,用示波器测得,不是很准。非常感谢大神指点。那为什么混合汇编调用MULS指令,总是报错,说不支持THUNM 16指令,但是手册上,我理解应该是支持的,还是我调用方式不对?谢谢

  我试了下,的确也遇到和你一样的问题,这个问题我需要问一下CW的专家,鉴于专家目前不在,所以可能会迟点回复你。

  但是,我认为,如果生成的C代码本来就比较精简,就没有必要一定使用嵌入汇编的方法,你可以看看C代码对应的汇编,比如4楼直接调用,已经比较精简了,如果你用嵌入的话,asm(mulsR1,R2),你同样需要先把值放到R1,R2中,其实这样生成的汇编和直接C的汇编还是一样的,所以,我认为没有必要嵌入。

  我试了下,的确也遇到和你一样的问题,这个问题我需要问一下CW的专家,鉴于专家目前不在,所以可能会迟点回复你。

  但是,我认为,如果生成的C代码本来就比较精简,就没有必要一定使用嵌入汇编的方法,你可以看看C代码对应的汇编,比如4楼直接调用,已经比较精简了,如果你用嵌入的话,asm(muls R1,R2),你同样需要先把值放到R1,R2中,其实这样生成的汇编和直接C的汇编还是一样的,所以,我认为没有必要嵌入。

  好滴,非常感谢,讲解的相当详细,至于为什么调用汇编asm(muls R1,R2)报错,还望有时间再给解释一下,谢过

  我试了下,的确也遇到和你一样的问题,这个问题我需要问一下CW的专家,鉴于专家目前不在,所以可能会迟点回复你。

  但是,我认为,如果生成的C代码本来就比较精简,就没有必要一定使用嵌入汇编的方法,你可以看看C代码对应的汇编,比如4楼直接调用,已经比较精简了,如果你用嵌入的话,asm(muls R1,R2),你同样需要先把值放到R1,R2中,其实这样生成的汇编和直接C的汇编还是一样的,所以,我认为没有必要嵌入。

  好滴,非常感谢,讲解的相当详细,至于为什么调用汇编asm(muls R1,R2)报错,还望有时间再给解释一下,谢过

  嗯啊,这个为什么报错我也不会,我要帮你问下我们的CW工程师,他暂时不在,如果我有答案一定告诉你,我会在这里跟贴的。


热门推荐