我正在尝试在程序集中编写一个可从 Objective-C 代码调用的函数。我通过设置%rax
和直接返回得到了简单的结果,但是当我尝试使用堆栈来存储局部变量时,我得到EXC_BAD_ACCESS
. 有人可以看看这个并告诉我出了什么问题吗?我的程序集如下所示:
.global _fn
_fn:
pushq %rbp
movq %rsp, %rbp
subq 0x8, %rsp
addq 0x8, %rsp
popq %rbp
ret
Xcode 转储此内容并指示崩溃发生在sub 0x8,%rsp
我从以下位置调用fn
时main
:
0x0000000100020000 <+0000> push %rbp
0x0000000100020001 <+0001> mov %rsp,%rbp
0x0000000100020004 <+0004> sub 0x8,%rsp
0x000000010002000c <+0012> add 0x8,%rsp
0x0000000100020014 <+0020> pop %rbp
0x0000000100020015 <+0021> retq