2017-02-25 373 views
0

如何將數字0xEFFFFFF2加載到ARM中的寄存器中。
這會是什麼爛?ARM彙編:MOV指令的基本用法

MVN r0, #2D1 

該指令是否有效?

+0

你有什麼試過,你遇到了什麼問題?參見例如[this](https://community.arm.com/processors/b/blog/posts/how-to-load-constants-in-assembly-for-arm-architecture)頁面。 –

+0

我突出顯示了關鍵字並(希望)改進了問題的清晰度。 – zx485

回答

0

mvn是剛剛將0x2D1反轉爲0xFFFFFD2E吧?你需要對應的0x1000000D的數字反過來嗎? Gnu彙編器編碼爲0x2D1,2表示向右旋轉4,0xD1是旋轉的值。你不需要擔心,除非你自己製作的機器代碼,你不需要把0x2D1彙編語言把你要的號碼做這一點

mov r0,#0xEFFFFFF2 

mvn r0,#0x1000000D 

ldr r0,=0xEFFFFFF2 

像GNU彙編彙編器將嘗試找到一個單一的指令,將解決MOV在這種情況下,選擇MVN R0,#0x1000000D,其他一些彙編器可能不牛逼ry,並簡單地告訴你,你的常數對於mov指令不利,迫使你自己去做mvn。或者你可以自己做mvn。對於gnu彙編程序,第三個選項會嘗試mov,mvn,如果兩者都不能用於那個常量,那麼它會將值放在附近並執行pc相對加載(消耗兩個.text空間的單詞)。