【发布时间】:2015-04-07 22:33:53
【问题描述】:
假设我被作为函数foo 的输入给定了一些指针*pL,它指向一个指向结构体的指针,该结构体中包含一个指针字段。我知道这很奇怪,但我想在汇编中实现的只是带有 ** 的代码行:
typedef struct CELL *LIST;
struct CELL {
int element;
LIST next;
};
void foo(LIST *pL){
**(*pL)->next = NULL;**
}
如何在 ARM 程序集中实现这一点?问题来自我想存储时嵌套的startements,例如:
.irrelevant header junk
foo:
MOV R1, #0
STR R1, [[R0,#0],#4] @This is gibberish, but [R0,#0] is to dereference and the #4 is to offeset that.
【问题讨论】:
-
这是汇编语言。你必须把它分解成更小的步骤。
-
你有一个东西的地址。从那个东西,你可以加载不同的东西的地址。这样做,你就有了一个东西的地址......对于 n 级的指针,它并不比重复相同的基本操作 n 次更困难,直到你得到您关心的地址。