首页 > 解决方案 > 编译器不正确的注册表 %rax C 代码问题

问题描述

我在 C 中编译代码时遇到问题:gcc test.c

组装错误:

注册表不正确 « %rax » 与后缀 « l » 一起使用

问题来自 __asm_volatile() 函数

我有一个 64 位编译器

void *  get_current()
{
    unsigned long curr;
    __asm__ __volatile__ (
    "movl %%esp, %%eax ;"
    "andl %1, %%eax ;"
    "movl (%%eax), %0"
    : "=r" (curr)
    : "i" (~8191)
    );
    return (void *) curr;
 }

我无法编译代码,有什么解决办法吗?

标签: cassemblyx86-64

解决方案


推荐阅读