GNU汇编程序'SIREG'错误

时间:2014-01-21 10:29:18

标签: gas

我开始通过查看示例和在线文档来学习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'操作数有不可能的约束

有谁知道如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

简单的改变

:“di”,“si”

:“0”,“1”

这将解决问题。