我不能真正谷歌名称和NOT并获得任何有用的结果,这个运算符究竟是什么,我怎么能用像C这样的语言呢?我检查了规范,并没有任何帮助,但有一个列表,它是&^(不是).
到目前为止,我一直在学习编写一些 x86_64 程序集。我读到可以减去 RSP 来向下增长堆栈并分配空间,所以我编写了以下代码:
push %rbp
movq %rsp, %rbp
subq $16, %rsp
movq $200, -8(%rsp)
movq $300, -16(%rsp)
popq %rbp
retq
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这将创建一个函数,在其中设置堆栈帧,然后在堆栈上分配 16 个字节,并将 -8 和 -16 的值分别设置为 200 和 300。但是,当我使用 gcc 运行此程序时,出现分段错误。不过,如果我删除sub程序的一部分,它就可以完美运行。我想我误解了一些东西,那么这里到底发生了什么?