我正在尝试使用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代码中更好吗?
答案 0 :(得分:1)
编译器抱怨,因为你的函数声明没有意义。 unsigned
是保留关键字,以其他方式调用您的函数;另外,您必须指定参数的类型。
int f(int n)
{
...
至于装配,语法取决于你使用的工具链,取决于你可能必须使用可怕的AT&amp; T.语法(或指定一些魔术命令切换到Intel语法并返回)。
(顺便说一下,xor eax, eax
比mov eax, 0