两种获取RIP的方式

·

//只有X64可以用
void get_rip_x64only()
{
  void* rip;
  __asm__ __volatile__("lea 0(%%rip),%0":"=r"(rip));
}
//X86和X64都可以用
void get_rip_x86andx64()
{
  void* rip;
  __asm__ __volatile__(
  "jmp _label2\n\t"
  "_label1:\n\t"
  "jmp _getRIP\n\t"
  "_label2:\n\t"
  "call _label1\n\t"
  "_getRIP:\n\t"
  "pop %%rax\n\t"
  "movq %%rax,%0"
  :"=r"(rip)
  );    
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注