【问题标题】:How to fix this assembly language program [duplicate]如何修复这个汇编语言程序[重复]
【发布时间】:2019-09-19 16:18:42
【问题描述】:

当我尝试在 Visual Studio 中编译此代码时,在第 13 行的 ':' 处出现错误,并显示“预期为 ')'”

#include<stdio.h>

int increase(int x)
{
    int y;
    asm
    (
        " movl %[x], %%eax   \n"
        " add $0x01, %%eax   \n"
        " movl %%eax, %[y]   \n"
        " jmp done           \n"
        " done: nop          \n"
        : [y] "=m" (y) //Error
        : [x] "m" (x)
        : "eax"
    );
    return y;
}

int main()
{
    int i = 5;
    printf("Original i value = %d\n", i);
    i = increase(i);
    printf("Using the Assembly code: new i value = %d\n", i);
}

【问题讨论】:

  • Visual Studio 不支持asm。它的变体(用于 32 位编译)使用 __asm
  • Visual Studio 不支持 AT&T 风格的 ASM。使用英特尔风格。此外,内联汇编仅在 32 位平台上受支持。 x64 和 ARM 需要独立的源文件。
  • 谢谢你的回答,我在Linux环境下试试。

标签: c++ assembly


【解决方案1】:

Dude Visual Studio 不支持这个asm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多