小编Ham*_*shi的帖子

使用 = 运算符加载数据或从文字池加载数据有什么区别?

因此,我正在学习 ARM 汇编,并遇到了两种从内存加载数据的方法。

方法 1:使用“=”运算符

.section    .data
number:     .word 0x8

.section    .text
.global     _start
_start:
    LDR R1, =number
    LDR R1, [R1]
Run Code Online (Sandbox Code Playgroud)

方法 2:使用文字池

.section    .data
number:     .word 0x8

.section    .text
.global     _start
_start:
    LDR R1, address_of_number
    LDR R1, [R1]

address_of_number: .word number
Run Code Online (Sandbox Code Playgroud)

这两种方法都做同样的事情。它们加载number该.data部分中存在的地址,然后加载存储在该地址的实际值。

所以我想知道这两种方法有区别吗?我读到该=运算符与C中的类似。*那么使用Literal Pool whereexistsaddress_of_number来存储地址的目的是什么?

assembly arm

2
推荐指数
1
解决办法
646
查看次数

标签 统计

arm ×1

assembly ×1