嗨,我正在使用contiki os开发Tmote sky motes (MSP430微处理器)。我想知道在我的编程(软件)中做乘法运算时使用的指令周期数。
谢谢你,Avijit
发布于 2015-02-24 16:58:17
msp430是16位系统,因此不直接支持32位值。32位运算通常被翻译成16位运算序列的汇编代码。
8位和16位操作的执行时间可以在TI application report "The MSP430Hardware Multiplier"中找到
Table 4. CPU Cycles Needed With Different Multiplication Modes
OPERATION: Unsigned Multiply (MPY)
SOFTWARE LOOP: 139...171
HARDWARE MPYer: 8
SPEED INCREASE: 17.4...21.4
OPERATION: Unsigned multiply-and-accumulate (MAC)
SOFTWARE LOOP: 137...169
HARDWARE MPYer: 8
SPEED INCREASE: 17.1...21.1
OPERATION: Signed Multiply (MPYS)
SOFTWARE LOOP: 145...179
HARDWARE MPYer: 8
SPEED INCREASE: 18.1...22.4
OPERATION: Signed multiply-and-accumulate (MAC)
SOFTWARE LOOP: 143...177
HARDWARE MPYer: 17
SPEED INCREASE: 8.4...10.4HW乘法器应该在默认编译设置下处于活动状态,但请使用msp430-objdump检查生成的目标文件以确保。
发布于 2015-03-05 06:21:27
您可以使用Michael Kohn的naken_asm来分解Intel十六进制或ELF文件,它将计算每条指令的周期计数。我在过去使用过它,周期计数器对于CPU (比如在你的Tmote中)是可以的,但在CPUX中并不完全支持。
您可以从命令行调用它,就像这样:
naken_util -disasm <infile>其中是十六进制或ELF文件的名称。默认的处理器是MSP430,但是您需要来自编译器的汇编清单,以便能够将原始代码与包含周期计数的反汇编代码进行匹配。
另一种选择是使用MSPDebug的tracer选项,它可以跟踪正在运行的软件并提供最新的指令周期计数。但是,我从未使用过它,所以无法提供示例。
https://stackoverflow.com/questions/28635340
复制相似问题