2014-02-17 186 views
1

我對此進行了廣泛的研究,並沒有找到任何答案。我需要乘以* 17而不使用ARM彙編語言中的乘法指令。我知道你可以使用RSB,但是如何設置值或使用LSL#部分讓我感到困惑。任何幫助將是偉大的!ARM彙編,乘法不帶MUL指令

+2

你的學習有多廣泛? (http://www.peter-cockerell.net/aalp/html/ch-3.html) - >'add r1,r1,r1 LSL#4'? –

+1

'RSB a,a,LSL#4'會計算a * 15 ==(a << 4 - a)' –

回答

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> 

和一個可怕的笑話:使用工具,盧克!