3
我正在尋找一種方法來移動arch64寄存器X1中的任何32位常量。在ARM Arch64寄存器中移動一個32位常數
有沒有辦法來執行
MOV X1相當於操作,#IMM32
IMM32可以是任何隨機的32位值,像0xaf41d32c
我知道它可以在A32完成使用MOVW和MOVT。我不想使用LDR X1,= 0xaf41d32c,因爲我不是直接編寫彙編代碼,而是通過在存儲器中寫入其32位ARM編碼來將指令存儲在高速緩存中。所以我基本上不能形成LDR X1的編碼,= 0xaf41d32c。
對於eg =>根據ARMv7 ref手動編碼的指令ADD R1,R1,#1是0xe2811001。所以我將它存儲在I Cache中,然後從該位置開始執行。
是否存在A64等效的MOVW和MOVT?你能提出一個解決方案嗎?
爲什麼[tag:armv7]標籤在這裏? –
我不知道AArch64,但你可以從[文字池](http://en.wikipedia.org/wiki/Literal_pool)加載任何常量,如[this](http://stackoverflow.com/questions/3914210)/loading-an-address-in-mips64/6507814#6507814)(在MIPS中,但類似的方法也用於ARM,特別是ARM 32) –