C中的x64内联汇编

时间:2014-05-08 21:14:15

标签: c assembly

我正在尝试使用C中的内联x64程序集对the sum of natural numbers进行编码,但它无效。

#include <stdio.h>

int unsigned(n)
{
    __asm__
    {
            mov     ecx, n;
            mov     eax, 0;
            cmp     ecx, 0;
            je ende;
    label:
            add eax, ecx;
            loop label;

    ende:

    }
}

我收到以下错误:

summer.c:4:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token

还有我如何定义n变量?在内联汇编或C代码中更好吗?

1 个答案:

答案 0 :(得分:1)

编译器抱怨,因为你的函数声明没有意义。 unsigned是保留关键字,以其他方式调用您的函数;另外,您必须指定参数的类型。

int f(int n) 
{
   ... 

至于装配,语法取决于你使用的工具链,取决于你可能必须使用可怕的AT&amp; T.语法(或指定一些魔术命令切换到Intel语法并返回)。

(顺便说一下,xor eax, eaxmov eax, 0

更惯用