c - 这个声明在 x86-64 上有什么问题?

标签 c linux assembly x86-64

该函数旨在获取栈的起始地址:

unsigned long find_start(void){
        __asm__("movq %rsp, %eax");
}

编译时出现错误:

Error: suffix or operands invalid for `movq'

最佳答案

movq 是一条需要 64 位操作数的指令。 rsp是一个64位的寄存器,而eax是一个32位的寄存器。

也许试试 rax

关于c - 这个声明在 x86-64 上有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691345/

相关文章:

linux - CentOS 6.3编译和ksig

c - 使用 "core clock cycles"的 Intel CPU 上的时序代码?

正确地将文件内容按行存储到数组中,稍后打印数组内容

ruby - 启动服务器时出现 Jekyll 错误

c - 在C中使用递归调用时遇到问题

python - 如何从文件中保存数据而不是在 Python 中的变量或列表中?

c - 如何从 C 代码中获取单操作数 imul

c - 在 GCC 中编译时在 C 中编辑操作的 ASM 结果

c - 哪些IO口用于编码引擎、传感器

将字符串数组转换为带有ascii码的数组