(&arp)[-一] 是什么意思

(&arp)[-1] 是什么意思?
上下文大致是这样的, 不一定准确:

void func(int arp, ...)
{
  ...

  xxx_log("... 0x%x called ....", (&arp)[-1], ...);
   
  ...
}

这里面的 (&arp)[-1] 是什么意思?

------解决方案--------------------
这个是获取调用这个函数的代码的地址, 也就是这个函数的返回地址. 

调用函数一般都会是这样:
push 最后一个参数
push 中间的参数
push arp; 第一个参数
call func
addr: 
  ....

call func 这条指令会在跳转前把返回地址 addr 放到堆栈:

push addr;
jmp func;

由于堆栈向下增长, 所以 addr 在堆栈中的位置是第一个参数 arp 在堆栈中的位置 -4
(&arp)[-1] == *((&arp) - 1)
也就是 arp 的地址减去 4 后的位置的内容, 也就是 call 指令 push 的返回地址.

从内容 0x%x called 也可以看出是想打印函数的调用者出来.