E.G我有这个:
MOVW R1, #(:lower16:(selRef_stringWithUTF8String_ - 0xbeee)
MOV R6, R0
MOVT.W R1, #(:upper16:(selRef_stringWithUTF8String_ - 0xbeee)
有:lower16:和:upper16:在操作数的地址之前。我认为它是因为它的拇指模式和指向字符串的指针的大小太大,所以它取出下部和上部?请指教。
答案 0 :(得分:2)
就像你猜测的那样。在Thumb-2中,当加载32位数字时,它通常使用MOV / MOVT指令对,例如
MOVW R1, #0x1234 ; Set the value of R1. R1 is now 0x1234
MOVT.W R1, #0x5678 ; Set the top-16 bit of R1. R1 is now 0x56781234.
IDA Pro认识到组合的立即值与选择器的地址匹配,并使用:lower:
和:upper:
语法指示该值被拆分为两个16位部分。