如何访问SPARC中结构中包含的结构中的元素?

时间:2017-03-06 05:02:16

标签: assembly sparc

struct big{
    struct small;
}
struct small{
    int a;
    int b;
}

如果我将指针传递给big,并尝试使用

ld [%i0], %l0

访问struct big,那么如何访问变量a? 我可以使用

吗?
ld [%l0 + OFFSET], %l0

得到它?这似乎导致了一个段错误。

1 个答案:

答案 0 :(得分:1)

当你传入一个指向struct big的指针时,它指向的第一件事就是big.small.a,所以在你的第一个ld指令之后,你已经得到了big.small.a的值。 10。如果你试图再次取消引用它作为一个指针,你得到一个段错误就不足为奇了。基本上我所说的就是这个:

ld [%i0], %l0    /* gives big.small.a */
ld [%i0+4], %l0  /* gives big.small.b */