我是初学者,试图编写一些ARM汇编代码。
我有一个像这样的宏调用:
STORE_VALUE 0x123456789ABCDEF0
我希望在这种情况下STORE_VALUE的宏扩展为:
MOV x0, #0x1234000000000000
MOVK x0, #0x5678, LSL #32
MOVK x0, #0x9ABC, LSL #16
MOVK x0, #0xDEF0
我不知道如何从0x123456789ABCDEF0获取0x1234000000000000,0x5678,0x9ABC,0xDEF0。有人可以帮我搞定义吗?
答案 0 :(得分:0)
我不确定它在其他工具链中的支持程度如何,但GNU汇编程序支持<div id="linked-article-container">
<iframe id="linked-article" frameborder='0' src="http://example.com" />
</div>
形式的specific relocations for movz
and movk
- 例如:
:abs_g*:
,在通过机器代码往返之后,看起来就像要求的那样:
.equ STORE_VALUE, 0x123456789ABCDEF0
movz x0, #:abs_g3:STORE_VALUE
movk x0, #:abs_g2_nc:STORE_VALUE
movk x0, #:abs_g1_nc:STORE_VALUE
movk x0, #:abs_g0_nc:STORE_VALUE