struct big{
struct small;
}
struct small{
int a;
int b;
}
如果我将指针传递给big,并尝试使用
ld [%i0], %l0
访问struct big,那么如何访问变量a? 我可以使用
吗?ld [%l0 + OFFSET], %l0
得到它?这似乎导致了一个段错误。
答案 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 */