分段错误,如果我按下并弹出%r15

时间:2017-11-18 16:57:57

标签: c assembly x86

这很奇怪。因此,在下面的代码中,当我对pushq%r15(第9行)及其对应的popq%r15(第23行)进行注释时,代码可以正常工作,否则会产生分段错误。

_initialize函数是一个c函数,可以在里面执行一些malloc。当没有push / pop%r15时,它可以正常工作。

有关可能发生的事情的任何想法吗?

  1   .globl _main
  2 _main:
  3         pushq   %rbp
  4         movq    %rsp, %rbp
  5
  6         pushq   %r13
  7         pushq   %r14
  8         pushq   %r12
  9         pushq   %r15
 10         pushq   %rbx
 11         subq    $0, %rsp
 12
 13
 14         movq    $16384, %rdi
 15         movq    $16384, %rsi
 16         callq   _initialize
 17
 18
 19         movq    $0, %rax
 20         addq    $0, %rsp
 21
 22         popq    %rbx
 23         popq    %r15
 24         popq    %r12
 25         popq    %r14
 26         popq    %r13
 27         popq    %rbp
 28         retq

0 个答案:

没有答案