我开始通过查看示例和在线文档来学习Asm。目前我遇到一个例子,我下了网。
hat.c
.
include hat.h
.
.
hat_create(hat_desc_t* hat)
{
.
.
copy_page((void*) hat->va_pd, (void*) page);
.
return (page);
}
.
..........................................
hat.h
.
NPTE equ 1024
.
inline static void
copy_page(void* src, void* dest)
{
asm volatile
(
"cld\n\t"
"rep\n\t"
"movsl"
:
: "D" (dest), "S" (src), "c" (NPTE)
: "di", "si" <- This where the problem is.....
);
}
gcc --version
gcc (GCC) 4.6.1 20110627
gcc -fno-builtin -nostdinc -O2 -fomit-frame-pointer -c hat.c -o hat.o
错误:重新加载'asm'时在'SIREG'类中找不到寄存器 错误:'asm'操作数有不可能的约束
有谁知道如何解决这个错误?
答案 0 :(得分:0)
简单的改变
:“di”,“si”
到
:“0”,“1”
这将解决问题。