我已经广泛研究这一点,并没有发现任何答案。 我需要乘以* 17不使用ARM汇编语言编写的乘法指令。 我知道你可以使用RSB,但是如何设置的值,或使用LSL#部分是混淆了我。 任何帮助将是巨大的!
Answer 1:
我同意的意见,但只是一个快速提示,编译器一般都在用常数优化乘法真的很好。
所以,你可以只用一个arm-*-*-gcc
工具链得到这样的答案。
$ cat m17.c
int f(int i) {
return i * 17;
}
$ arm-linux-gnueabihf-gcc -O3 -S m17.c
$ cat m17.s
<skipped>
f:
add r0, r0, r0, lsl #4
bx lr
<skipped>
和一个可怕的玩笑: 使用工具,卢克!
文章来源: ARM assembly, multiplying without MUL instruction