我對在aarch64彙編器上實現'switch'操作符的方式感興趣。 在ARM32平臺,我用類似切換執行;臂;彙編; aarch64; arm64
ldr pc, [pc, ta, LSL#2]
nop // alignment
.int .L.case1
.int .L.case2
...
.int .L.caseN
但由於64位版本有「PC」有很多限制的寄存器使用,這樣的實現不工作了。
看來,最簡單的方法是使用對比較和分支操作,如
cmp ta, #1
b.eq .L.case1
cmp ta, #2
b.eq .L.case2
...
但有時也有長達十幾例,它到達最後一個「的情況下才將導致顯著延遲」。
請您分享一下您的想法如何在aarch64上實現快速切換。
謝謝:)
ADR/ADRP可用於「PC-相對地址計算「。 – auselen