如何访问 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 */
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 */