1
我對此進行了廣泛的研究,並沒有找到任何答案。我需要乘以* 17而不使用ARM彙編語言中的乘法指令。我知道你可以使用RSB,但是如何設置值或使用LSL#部分讓我感到困惑。任何幫助將是偉大的!ARM彙編,乘法不帶MUL指令
我對此進行了廣泛的研究,並沒有找到任何答案。我需要乘以* 17而不使用ARM彙編語言中的乘法指令。我知道你可以使用RSB,但是如何設置值或使用LSL#部分讓我感到困惑。任何幫助將是偉大的!ARM彙編,乘法不帶MUL指令
我同意評論,但只是一個快速提示,編譯器通常非常善於通過常量優化乘法。
所以你可以使用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>
和一個可怕的笑話:使用工具,盧克!
你的學習有多廣泛? (http://www.peter-cockerell.net/aalp/html/ch-3.html) - >'add r1,r1,r1 LSL#4'? –
'RSB a,a,LSL#4'會計算a * 15 ==(a << 4 - a)' –