如何访问 SPARK 程序集中结构中包含的结构内的元素?

How to access the element inside a struct contained in a struct in SPARC assmebly?

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

如果我传入big的指针,并尝试使用

ld [%i0], %l0

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

ld [%l0 + OFFSET], %l0

得到了吗?看来这会导致段错误。

当你传入一个指向 struct big 的指针时,它指向的第一个东西将是 big.small.a,所以在你的第一个 ld 指令之后,你已经得到了 big.small.a 的值在 %l0。如果您尝试再次将其作为指针取消引用,那么出现段错误也就不足为奇了。所以基本上我要说的是:

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