Az ARM azt csinálja, amit mondanak neki. Lehet így is, de 32-bitig felesleges: 8 vagy 16-bites értékeket közvetlenül is betölthetsz a MOV
és MOVT
utasításokkal, utóbbival a felső 16 bitbe. Ergo egy 32-bites konstanst mindenféle PC-relatív címzős bűvészkedés nélkül, közvetlenül is be tudsz tölteni egy MOV
-MOVT
párossal (vagy az őket eredményező MOV32
wrapper-utasítással). A legtöbb konstans pedig belefér 32 bitbe.
És egyébként én csak vicceltem, hogy a fordító szándékosan csinálja ezt, amikor nem kéne; nem olyan use case-ekről volt szó, amikor muszáj. :P